From a187c445fc9836caa0b41b1be9a3e5690a5d0805 Mon Sep 17 00:00:00 2001 From: Pau Miquel Date: Tue, 16 Aug 2016 18:46:04 +0200 Subject: [PATCH 1/5] Removed unnecessary preprocessor statements --- tutorials/cont/TListAndSTL.C | 23 ++++++------------ tutorials/eve/SplitGLView.C | 6 ----- tutorials/eve/alice_vsd.C | 9 ------- tutorials/eve/pointset.C | 3 --- tutorials/eve/track.C | 12 --------- tutorials/foam/foam_demo.C | 8 ------ tutorials/foam/foam_demo.root | Bin 0 -> 36455 bytes tutorials/foam/foam_demopers.C | 8 +----- tutorials/gl/glvox2.C | 20 --------------- tutorials/gl/viewer3DMaster.C | 7 ------ tutorials/gui/QtFileDialog.C | 9 +------ tutorials/gui/QtMultiFileDialog.C | 9 +------ tutorials/gui/QtPrintDialog.C | 10 ++------ tutorials/math/Legendre.C | 8 +----- tutorials/math/LegendreAssoc.C | 8 ------ tutorials/math/TSVDUnfoldExample.C | 3 +-- tutorials/math/exampleTKDE.C | 2 -- tutorials/math/mathcoreGenVector.C | 4 --- tutorials/math/mathcoreVectorCollection.C | 16 +----------- tutorials/math/mathcoreVectorIO.C | 11 +-------- tutorials/math/mathmoreIntegration.C | 6 ----- tutorials/math/multidimSampling.C | 6 ----- tutorials/math/normalDist.C | 2 -- tutorials/matrix/solveLinear.C | 5 ---- tutorials/net/spyserv.C | 2 -- tutorials/proof/getProof.C | 7 ------ tutorials/proof/runProof.C | 8 +----- tutorials/pythia/pythiaExample.C | 3 +-- tutorials/quadp/portfolio.C | 10 +------- tutorials/roofit/rf502_wspacewrite.C | 3 --- tutorials/roostats/HybridInstructional.C | 6 ----- tutorials/roostats/ModelInspector.C | 4 --- .../OneSidedFrequentistUpperLimitWithBands.C | 6 ----- tutorials/sql/sqlselect.C | 3 +-- tutorials/thread/threads.C | 4 --- tutorials/thread/threadsh1.C | 4 --- tutorials/thread/threadsh2.C | 5 ---- tutorials/tree/drawsparse.C | 4 --- tutorials/unuran/unuranDemo.C | 2 -- 39 files changed, 21 insertions(+), 245 deletions(-) create mode 100644 tutorials/foam/foam_demo.root diff --git a/tutorials/cont/TListAndSTL.C b/tutorials/cont/TListAndSTL.C index 88c12e613ef0f..ad022864683fa 100644 --- a/tutorials/cont/TListAndSTL.C +++ b/tutorials/cont/TListAndSTL.C @@ -1,5 +1,6 @@ /// \file /// \ingroup tutorial_cont +/// \notebook -nodraw /// This is an example of using TList with STL algoritms in CINT. /// /// #### Output produced by `.x TListAndSTL.C` @@ -38,12 +39,9 @@ struct SEnumFunctor { // A functor for the find_if algorithm struct SFind { // using this ugly constructor, since there is problems with std::bindX in CINT -#ifdef __CINT__ - SFind(const SFind &oth) : fToFind(oth.fToFind) {} - SFind(const TString aStr): fToFind(aStr) { -#else + SFind(const TString &aStr): fToFind(aStr) { -#endif + } bool operator()(TObject *aObj) { TObjString *str(dynamic_cast(aObj)); @@ -60,19 +58,19 @@ void TListAndSTL() const Int_t size(10); // Initializing TList container - TList list; + TList list1; ostringstream ss; for (int i = 0; i < size; ++i) { ss << "test string #" << i; TObjString *s(new TObjString(ss.str().c_str())); - list.Add(s); + list1.Add(s); ss.str(""); } //->>>>>>> Example #1 <<<<<<<- // running the std::for_each algorithm on the list - TIter iter(&list); + TIter iter(&list1); for_each(iter.Begin(), TIter::End(), SEnumFunctor()); //->>>>>>> Example #2 <<<<<<<- @@ -82,16 +80,11 @@ void TListAndSTL() SFind func(strToFind.c_str()); -#ifdef __CINT__ - TIter found( - find_if(iter.Begin(), TIter::End(), func) - ); -#else // in compilation mode you need to use TIterCategory as an iterator for such a algorithm like find_if - TIterCategory iter_cat(&list); + + TIterCategory iter_cat(&list1); TIterCategory found( find_if(iter_cat.Begin(), TIterCategory::End(), func) ); -#endif // Checking the result if (!(*found)) { diff --git a/tutorials/eve/SplitGLView.C b/tutorials/eve/SplitGLView.C index 101b1f0f4a42f..c4cfe5ed49694 100644 --- a/tutorials/eve/SplitGLView.C +++ b/tutorials/eve/SplitGLView.C @@ -1435,12 +1435,6 @@ void SplitGLView::UpdateSummary() } } -// Linkdef -#ifdef __CINT__ - -#pragma link C++ class SplitGLView; - -#endif #ifdef __CINT__ void SplitGLView() diff --git a/tutorials/eve/alice_vsd.C b/tutorials/eve/alice_vsd.C index 03c0123d09757..0ed1bea49fb5a 100644 --- a/tutorials/eve/alice_vsd.C +++ b/tutorials/eve/alice_vsd.C @@ -19,15 +19,6 @@ /// /// \author Matevz Tadel -#if defined(__CINT__) && !defined(__MAKECINT__) -{ - Info("alice_vsd.C", - "Has to be run in compiled mode ... doing this for you."); - gSystem->CompileMacro("alice_vsd.C"); - alice_vsd(); -} -#else - #include #include diff --git a/tutorials/eve/pointset.C b/tutorials/eve/pointset.C index 754a079801d17..8e01c26e154ee 100644 --- a/tutorials/eve/pointset.C +++ b/tutorials/eve/pointset.C @@ -7,8 +7,6 @@ /// /// \author Matevz Tadel -#ifndef __CINT__ - #include #include #include @@ -16,7 +14,6 @@ #include #include -#endif TEvePointSet* pointset(Int_t npoints = 512, TEveElement* parent=0) { diff --git a/tutorials/eve/track.C b/tutorials/eve/track.C index e5c17da3e98a7..38302fc45c0cf 100644 --- a/tutorials/eve/track.C +++ b/tutorials/eve/track.C @@ -23,14 +23,6 @@ /// /// \author Alja Mrak-Tadel -#if defined(__CINT__) && !defined(__MAKECINT__) -{ - Info("track.C", - "Has to be run in compiled mode, esp. if you want to pass parameters."); - gSystem->CompileMacro("track.C"); - track(); -} -#else #include "TEveTrackPropagator.h" #include "TEveTrack.h" @@ -172,10 +164,6 @@ TEveTrack* make_track(TEveTrackPropagator* prop, Int_t sign) void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) { -#if defined (__CINT__) - Error("track.C", "Must be run in compiled mode!"); - return; -#endif gSystem->IgnoreSignal(kSigSegmentationViolation, true); TEveManager::Create(); diff --git a/tutorials/foam/foam_demo.C b/tutorials/foam/foam_demo.C index 0ad860b494f7b..bebbb3b11b6ff 100644 --- a/tutorials/foam/foam_demo.C +++ b/tutorials/foam/foam_demo.C @@ -14,14 +14,6 @@ /// /// \author Stascek Jadach -#if defined(__CINT__) && !defined(__MAKECINT__) -{ - std::cout << "Using ACliC to run this macro since it uses custom classes" << std::endl; - TString macroFileName = gSystem->UnixPathName(__FILE__); - gSystem->CompileMacro(macroFileName, "k"); - foam_demo(); -} -#else #include "Riostream.h" #include "TFile.h" diff --git a/tutorials/foam/foam_demo.root b/tutorials/foam/foam_demo.root new file mode 100644 index 0000000000000000000000000000000000000000..cc2cd2c6261132843777ee8baf48b9c3e621b1f0 GIT binary patch literal 36455 zcmb5Vbx>T-7d=QqfCP&WAUFgI?ruQ>Aq)_LOVD9(cMl$Xa0U$?+}$C-00RVP&;-cf z?*4mxzFYg>*6vdEre4)FJ>C8K-FxmirycF=oYByBY0=Qoz-VaEX2A7uF9TeUfJ^Pk z|8CrK(a;FLp*_k^taLTNd5Ovh+}@7**1ivX`~T?=iuTZvh6dq_BQ)XvdIo+C4Glw0 z*23BpA7W=@V*oa_v14}xhJ$Tx;pA**=4fQ&^#A+~8pcCkz;z4^lnv-g4Y>a66AjJH z_5XFCY5$E!_P_C{|2LkKhyTY``|N0EV(R21FN6Jm-*M6zaSHNraT%Mi@j*C^*|@k& z`PqcPf;?=d#-_%CU_nk}Q&Y%$G&Cu+N5H2j(A~q*p`ioU|KDEF(3}f^p*;d!{Wmnj zhn^nA03CsWr2?3yekXUYh#P{bT*B;4-=^3|~X0E{B z*^^NczcKqYiMa6idxfnQZDj!#WWLFIIqmlLW>j4k#BSHL!pv;fW?56Y!fJg)OxSgA zsY=1D+L9|O<$7A1rUC_3U=c#-wsFd9Lb5%+$ins}vqO1*&OCr~MePmzL9TYptv-ZjJ_PvdU6vT9FvYHPmWrn&tX9TC8iwVLhbQZ5BLG33^ne8x$mhFX%bGjKEqHWe>PAD%q|bsAm=E=O z^Sl(eS++q7{rqweoH6gN={y|#`t?e`_pPVfM=Gd))J4uk6&0SW!DORS3#ujSM}w{k zy1`%#qhO1cUI;pv|FvQhoiQLYFv)*74TSfbHExV zWS8^S;Rr~Mhql?EON;kdJEKDnspMR_Iz@qi4~Cm-#o@5%wMK7V*%$5-U=9@xauBTG zBLBpI=bHNa9O8GDq}EKT+_|&J!GnX%yz}RS8R}dX+sO#hVu&udUNwc>`sHvW@z>}N zb`{tb$2W7)=9D-yX9j#jrA?sTJh3$J^dxNMGH`cv8g8A-$!C9Q&&h^Wv{`Sp``GKf z=fVNB7QgLJs^W8Wg=O1TN564OHEyf1YD5=93_>!8sX-U7^wstJhwa7is5h1vI7-7G z-TAKt*SvL`%}_h<2;(Ua>F8rQvPH0MWR^}d{?1h7 z-rfcsiVmC=5^!gHP>qfcbQbHv_f36fy29UW-J!c)pjYRw*fU+xa%%XjA~OE$M;!9~ z)J_D#_hEVPU)2V9a5i3+I~gfe?xgD4$B3K$8P6P*Sm?njN^uUNhvB&t2)aTX>SZ7- zW3S(I=_u8IdbN`^_Q$L0N`!`ozw9;$N&H9Sv!(B;DC5!2@(hbJ9V0AC%cxnRN(dX4 z`+=Zg9z&?~O^}7F?Ui5~X^>v+Z6&KK^^UOT==|tpux6^W8qi+b$a00thML9o>Xl)>o$tEMz`8m}*fRknrg33cL(45vl%jxma@^^E=Sp|2FRhb_pDHyJ2avosce9VddkLfv{7F!rXge& zJrP7XTJjt#%_c%bQ_4nEX7qa;Qf-P?3iXuGDL&J16n~*D*XEGyMO~d6lHf&c)<#^%9E*al-(?f!gEl>v^A|?8bPcDbLvI& z4#=ch`%42+zb>hk%uEmo-pbN&>%!}LK8fjxjr6(8_~=Tyny8W26$-P57J(q$v4m|6 z^kZ!%Jl5^sv!xrYt5BH_PYgbnm_JalW-5VSKbceND#5uNh+%cqEacw|7YO7t)WG+TKvB61t~f z-I)JOe5)aNqIwli>2K$N;A-c-7Fk@2{`EO*NW z$UCa~6|6)?b?70R1oZm8b3R2ywx8BZ8x{$Pt(M1EX+>zzCdIV%vur1wLE?~!Heu6j z{MWQj-@=!)=JFdsDGM2hO1 zf0=)|dqVSXHEp*e%O$v`K}nJSl3%trPZKi^DQz~+f}LtEmiFW3&Di8PWAKyME>`q3 zZ~oAPViaDO7k|Su#6d_pj>>t6YsnBWdVT+o5M_-N;n{S5kih>H!FimLWDM@dDg;?^ zcmEkMijgTPMVTibwLh=m^`fmIUc`(jd+j*8_~r~(`#Zy)oia33K7bjbIYcMmg+3B> z1xiULelo&xC;IhenQKMhh^vCb86?;ueHI~eXZZl4HUk3HXr3!+;zrmp38IM)x0G9c z_F|#)6R#?;)Wy*!VQhOGhY&C2+Br+rAPX1otU20#cwnNb8TiUYyd%@`sR=Zos30G*swPvx1yW#?R?!xc_y#~?@lEfv`<0fqw=ggwm&z`{D%CeJ%$u`YR!_ECF1~HLO zD71{QiijKNCP!*x%((#xXs9csykgD|e=>BowUHQ0I>1PCpI)#x zDOd6ip}-`*FAj(M|1F`#S@sh~!_Pgc-b-&sck)y!o}FnYt>E2E^atY`1DI!ojMEP% z+^OUZBc3GaiwoR{ zR|txHVnt4a_UA-=BUFx6XFBjr@tl(x-2!HYw&nx`jc`rVjy?V7_B?3v-frCKfDfHc zdTq93*X?59XyW7RB)6qxw}#+Kjb2*E5ai)tGlgvZTbQ)Akxm1AvNT?C*mEplb&Xmh zh7jFrf^d6JVC&f(#mu3N+3b7Al5rKU`If^^s#LHZEh9_*M2Zoze?Bs*d!f89QhUO? zDjzA8V^s_HO#ZEqniJ7LUw-Aqo|0dON<`U%w`#imV5w-xNyIBf|LhVcVIF$^)%e9* zycaHIpGLZteT*hvofAg2p#v~aPUOoXej%BW4Iu?pss}vs<*?|(p078IDBAB#toL9*@}Jg14mE7oI?^B<}%rHZs>u) zGFpxC5tTkv*Ilk*j&nyl4K`463H^X>c{{7EYqMv=%Pm(G^%*N|A9|_Zo3J&#^XqAi zLz{yC;$Rn~f%l)0?QR0mwaM*6s!L$s9UT)U7`?WWL*Wxn2mr|a2}|1gy0WPhbi$A9 z$l9_qyxhtu2fygl=fv_ox1!oG23!w_{CM&ZRApy)R72^vgLY*|zq-#8ZI9&RE!T$i zM2GPb^8xZ)9ueAgv_Y!Zir%H}@nvyOnEH=ae9xF4Wh)m9XH@;h&^VoUY#clqT0?g9 z8?Hiyk_Zc~3DT^fO&YuoWZ2Wy#+-JGkt@U1yf2(l_3ERo%#}H(iDM1X#lvZlawx$J zrf5m67Cc$VcXRAWLwVE^;ax`bt|tc9!C+2M*9*ANl6z3ToY_MN%t_dCZ7qgHBl2^? zR)KpL1=^meKu^hwxpUKwkcPlAzDc(+!)8%`*nTk^|8Tgy#JS!_~7Y+a!&qR=FJ^ftB#?NGi)Q<3@nILZ(o;4r* zuY}}tztmHzym8#|?!TOW$e(&)V01KKMHB{nDy z#Y>F$wZB4`d(JPk%s%~2<+xVq7bx30o*oHu(ny(Ru z`9~hp?Y)|e+?-I5bZvwD^X_3d{1hLJpr4SM#nv`Hra!tTIQn40)_`@2VdTOU4s9|#F#zVSG>jA&{A4>9Ls0Bwi!Z~D#nZHABhbPSbrj#< za&i`8{n_RYejcdP%B>`P{kGQvAT~@bQA6zv`n+`yFcvM_({QSUE%VlEDYS`#{g%|n zM!0Flshh#a3crHa25K?PFEv~bANX*Ymcw-Zj1)S8)aM9&BFtfq?OPS?l&Wd@IE;91 zebit^wYT;|K~ynG7^3NamGYjasl&`Amj&aE;oeqO&pJ8PGqR!0wj1|C}JVD{b5e4>20=s`|A;$8?6>}{KVaY1jnUCM9h+`BFXv*NJ( z$FNIm)upVxwxo*RUYeBNq54i_D~r#KL*1C;buH+C(Y%D=TQbb3^EcT(urWv1oVc$r zK|-&J{fjW`71^n5A30Hu2ree*mKqDwOsJUgzgMD2s9;HTZ24#Sa*+@0r*yEua~wJ3 zT^V}UhOe_5Qfa$PobhJw{ZxzVX?kpZj>?GZLF<&= zc6vcRHBEQP=|F?!F#~{yr(qe;_~4^?8G`;z3g(npgX420s#n-uZG-34DOGsmqf_^` zjRJ8%-{Bx)zIf?=Mn;M(0OO)2Ke4r6`FwpAz1aTbQd<70;J;l0u%BjcdI(4}1E~}p z#S(h-FIdzZnd(fljDB!4UTLOtXM3Pi(s8~R`uO_*mB*Z4^PHfOFn3`U+t_WG;^cG3 zl~riZ10vQiM@n?MkFG2NX(+qju_LeVT5N`W8M->C852E+K+A08t& zy2dTx`)xV*#K+6~G0oNdMytsDRJn&3bh8{{DGqN($*_2hi1Tn=%Wbr{p|l(q;KVf2x@5 zKec4!Q;)5gecY*LeBe!Do4}sMFg+6F+F*FW0wYx1SJn(7Yq_Miz0>pz;^5Z09Vz|< z$0@UMckaiu?dFC$ciTtpzrG}vCF5e;L^ZO!bvsj47?H308`@oMIzVq0s1Ts^?Rs() zp1*I;6-P_KbpHfU!&D!V&GYk{V1$ZMGNy7kGhmIkMJrC_;{L6q`i0xxU=Ar@+9?*S zm}V}iX|1;PiQVj}mx)RAtnR_cZFSDL{bXk8yw5~lb$*i2A37B1qqZ$qQ1>Zde?Un6 zeqQfuZ+aNWKs|m$XH4e$iEx_CD{~}O{qLwQ(Jxzg`We1N>Eak`Nt>C^|5hwS&k{TT z0di)G%$LOxFj+Qmr@*Tc8cmlcD%KPKq|uhK3>OlE;cY4SH$_F!{wu;1)~_Ws`9pQ| ztX0iQ`VM}QYl`%hE`S7DTk?lPD0Sn@@brCZdC{%PMS}5vDwWfVN8;)^`4L#-xpyX8 zeooWuBl!mM`=Vyv&=X5ruYRVJ=L$SW(l=?+;V&n8dQ~g@;%)!DaqYEr*>X);T)Nr1 znW+MD56{k*Ma;_XTH7jE(9H)a{VNcOc6=*icNk${@K*(;G^o|1Y${SghJ3XkzWCxh zo#i^_3SRVBp$OZ+-rP{~Iza%NEv=606C}ZSIbMQd1d5uDqi8^sbEZoNLJDdKBpesa zkq|oJ&<%jqu;c7MXdkdDI@+`N1v3nG`5Qc@otcYFrq^ zdd2`Op1~A<SgKET5%PaE!Z*3N1Gj&H`0A;nmv}G3<^_~$wI7j*vks;@*i%>V2F4175*9Fo zD>{+E+++Z5mRD(3>$phu*X7=y<7(4m{TpFN<+jqxSYBbCbxOU9nv`0Bc%Vv%J!ybN zA=>_Xt?FD%;$3!`z5gXu1Q_P(hHy-`2bU`SZtyx323FV2nvN&PCM-1sE);YW3UF1r zq|fA`>fR}5x2f-+B9{k^Pq%z4S8sN)78}IrM(-%h-XO!l*nz7ZplE%zaT&_>4Rvz) zAEtgA0f7TjlsULVl;4*wpXwE0?BRHfzj{S$GMBu&5U!c}7mjNJu=e`NoQ03L$%<2s zKTNzWL*|JI*%}(qJM4Q!RK3u!N42Vaen!ai81}cAp)EWotWUne_M=ok_NG~2aKER| z#=_tAjSR!n^$#76RTN$8>%RsPZvZk1$hiJ$4KIPkjn_Y%kU1_?xr^*xb3WHZ@#$3K zi(dqs=cgu{HKbxHSk8!28fH(2px*L)SvNeU<5mXXO#cuh!51DmTGamH#ZR%Y!zmitIRqyWWU4-Y9a63Z%e?n8>GVm~MZvN) z#_j7NOxM?bnJfj%3fHIFT25sJ@0;F>+I5zAAmlqJeaU! zt-l?hVQl0i_&Y%9$rGoSQ|XYu=H{5UXF#xdmCX+nHW=B=6*ec@eFaKW3i(gF{2{0;l4$a8Mn5Eof122t|ey{9b2@s`TmVo;J_+n$q8#~iI z)~5WbSQkH!ORIY{rVElr?C&+Bp2+idq&tU6U&+^C3dOgHn*;6x@|a+mshktZzlw)J z4G{e?X1Y;)6Pu|cu_gROZ@BTscbN8LOqAcI%3qR-(s_3>)CeNP4GhuGeYvGebA)^f1X&GpN?c+fC>tjXpADbsdxkqKeqRe;vG$`e$bl{H@+&rM=T9hJPK{ZCR5 z+%qeY+M3VG$izqrLT2=|#8_7nX!x8`R%JVS0L5{x9=EDCut%e(#TC~aqNlOtgHcPY zkAwQ-I(+7je^p|G(oo~A-s)sp z0jiE#Vg}Hy_Ta3i0BC{upz<_nml^d6Tu?;}T9skw9}*Y%2qz9#ZI%;Ya5>zS^WpGc zcj{=?_OzpJH0V!1@?}&*ID^^8U@ND@C8Jeva>i6aB?T4@T%uaf>1meHX9eo46dIy` z#q&h3In6+{jD${1+`)lqKtdR1L{54WDK;%S{$V|9C>m}M{Ac?PqXw6)Un$fZ{w~pm zTx+E=ya^Yk0PN2K_o&X51*WtG_OVvPG#Dp^nlg)KiW0P^-!3$(zJVfnN^I$)F$qs4diGZM))lQ*O7-msanMjsAVpt!O#R%r+i> zndDr`Is6+fCnat4Nar5{H1!a{PsG|NQdsir|4|?7N3fm-r7ny%P$%z z5ak@>ngVQtgh{QpXjRjdC1+UDM{rv#@|KU%*e-bW1g%(Ls)`$bwWmA3?CQym!sB4s zJS}fSM`kBvOo%EjaiY2wo?}fEb_ud}#1|Ebq-?v0)s3HvB3i8)#*q%_fRvJXN$*6@ zHnj2!0w}RBkAjzQSYTb}3(R<57pc4hM0+&P7cdXy+Xe7l9MrjZVw*mhh0jB(>SQ5g z!SW-Fr3sknI(P1-w#y_7Zjn0q#+*a7`@wOwu>CdE`#^vrWPXk6Uwl<@Gfg5hKN;37K<73Rs-l&&5wZQojRn zLlsNTIwMUCLimJ_9_NfJY^fJ_0DSdm9bB)6|KmIxzYP?~Nkm(AKITr;6+JV#`$x6t zSDdTk+1j~FxB*XFzN#isv<%yM&^I5L;qIl7g`&(BP z-ni_PSmm8#fGnCckW~(m|n74tO|_ z2Oj9Us9IK=EK*PPPXxmf(wFNwO#MZV=EZfInd#_!ZT0R@yayS)C&seA4j)CnOxvxk z@Bt7(vnsABEa`TBEfO40Mw5C3NTc^qa|RCE)2gL&vp;7J!^RU7g*3Oh_gyu08bv9( zK!!2HPofz1Na&yjN~)=EyaoCxlU4r)BQsvKmIu#s%#>HYy@kg(nq8Nq=*Bh$e~{lM zNFxP@drbCQ88(V|6>%;$%k|oHcm`Mm^EqT141Q~vIjk2u<51_Sfi@)qg$a)1(vKTm znwYC6-2B=AGb;(tyzD#HNdpZ}#B0K0iU|j^#S&hq$+DU{f*fj!F9`uovJkJMIUjxCy@Kc|SVU%JH}3Lic~U=S;=K1bYu_uYLttSCU*)`Gu@fj_6?lE?g0nwXJL;hJXi=E~|`mXiA`<`{0 zcOkQxtD&3gnW#hvKlk}>Km-Y)US}ROAW*DxP0MVo^_2=_wSVWkW$WFDQ)-@S@7Z0< z!i>@fLrP$&kCBr%|Bpk4YIph$WTO^uv7Go zy`oAx%zV(N6|*$B=((1mDp#jxzv9!`wK>LINr8_}ElGUCEldEExP>niTAqD?Nc>Nj zn1JE1MQTb2*go59mmp0tFu)uqVtj)@+Cw!{v7qvdm_e>08m?;dY|&1lNM?D??b#(u zQIZZ3JsT~yd>^BbNwuY6}N z<_2%;Kcx%7MN4@$OJ6G1c9aDisXugFJAW+tmGITsweWt1>{U>j@01S5+_Q*tfeSuv z-&Y<-`?nrXU_yC6e}_Pe=0avS;z|`?;T9^!+~B#glUXe_q7}@#MC<(i=A8^0zQ~`j z4s_4=cny<#P_E^2W=lUW>A;D%uE~3=!q)laCg>e1x)x1WW;4|5C1?MV?p`mRXmZ8S z9RDnqk6{4hstFCHFEkTU%I?;vpLRCMzVeT+RY~HR%TEF-7eo4Nm-ioVI;%6qm!EGg z@87V1R`sYwQaRq;tHX1-QbaZ5$4xz}oi^ML*q0~FaudZ$pW=(B0NWw;{0UHS0JU@S%ieP;L8rs*PuecZ|tPt)bMqsN@v+y2-!;t8lkhfEpNvkW2P-U0}UGlb1~ zU*OR4jJexRQ=qchX}on<_K33Vm%{w2@!-*? z*~pPPgs9mr*661Wg2Mh3DZPsIh{dzfKZz&{aHg?t4usBeFQ=7PnT;xo{G-h~``sf= z8U=$uJc&PP83lYn5%v!hVsW$6rJ^Y(o0TUBCN|K5cZXIK zQ;a&o2`*X^K>#CfyDAKu6q2hLl$W}WZ`G6+HPbbvo2L3)@m4T_^cBIfIrfDdS#8Hc zE_%g6)=9B~u*L`g(r@J}rp+Ik4NH_J|8YQX z+2gY&daD1jMm*v;ukv#PT&+wONw-eOze9W07fl#~f%N~n$i*fw-|@tcOlxN!`Kh<{ zI|641V?t2w*=T`{Q1&&~Z6iIq!B~Bpt}~BIyV#_&7Ykn}*4@N( zfjWpDtPj?`ng>at-j4lRCoEc2;>vDZyZ@Vs!?jkv3Q-T>H1G@(qbo`5@G z7%H@R--|n+=9#lL7t3k$ud!N$9EVzbYq<5uX|yOsGu9*6T#8I8+LCOL#tJ(OJ?319 z7w76_Om(PT8@`FH(#&<-5mv!uP5ReSwk!Z&Rbb}1dL<_1yZn@7Fbi8rXYLETelk!S zUTkDhWkLlS-Kny?A*4+atI|RgO%Xf@O>uD^QDKv>M~4xbA{B6(?}7drd1zr1*=FEB zr}`S4&C4Z+9inMHk#RIQ#WAW8@zGlJ$HFW(4VQ}1s>fd=3C<7MjU`^|7H;=Pq6#}_ zMlbq9xv6OA-B4jdJbu9YgH6IF870f8xZp=0f(x z!S-=AD%x^=M-;pSCd-4ocD%~HLHnQ7jI|_sjfJ4x<~l2tRy`nfKg@LaLHKK{Lg=c; z9L-}|tnuJ=e8rVw8VAT ziwxG_45=hfD=s1=Zx;W!KciPS=-XD%<5`*Ya=-qZ^*KyJmhIld6`*;K@wx44*v5c2 zc%A7wJsHZus{~yNed$*4_5$&w+~s1XlT&o%4a|=lz*KhuZ9BeX3_zazVMmj0<9I+r` zR_18WvaVf7s%6TQf4@C`L||dvSFI|OzSg$sJOlO3+1{()?#raWP>sx`9QmaENTXvY zQ*bedvZ7Si^B?Q3G8+?fZT5YHkYdbh+JZ|j#nqQ1g`Lwq`**<#W?hTdGYD}xMUVW; zr?BUMcgC!hoUt(UNHNGe+oZRO6v@g(%ob2PruExVyId~fop$K}tMmpa~1D=XpgGj6JF(B$)< z01%`lkq6Jx?X@+NC zk1Y*Rua(bIMqvwYLgAKw$hl4;9D+H&f1G<`WICIrIlapR7SA_DR#nT-@(()^es0eR zw{YQ$CkjkS_>(G8lJ{-KM0fu>zD3gUw^XuS(kL)ta@c6f$5ojE%fTiB=D8*u$YLqxCS41h%9+`-d8=M2Q`*Lpz@e9mQ!mqs?a=e_mhOFaoi>?`4O zdPF#@Mfwq)WUqG^!uxEzNC-p7nNE^mvEc+)`AhbylU~9>N|wreS8u9mpwCXh&~EWe z$nPGu#Rz5m)kKH8P((7|jbq3d&JIg;P70>utr+kJV-{+m>^Sdm+0i8$^{>BB`ZQZL8W^t`onr+%WZKiMh= z*Vngbmu0Yt0s>)yC0X1xjglE=YkNhJ-xal>gikd?_JYb&uk}gD{P7?&iVWO74byhC zE-ny_p81yTZt$DSy)kMxqu0>p{?m4i#fv6l?TUd~lL~c21Ke90RKLs%Ut<^)H)CE? zA&c8*yG~rFW-DhDV)qiO_uf6HlF=VHa7vS6)VbeVU8XrM8zGM(_YD3-U?Y7p7)$4T zEAPAiUer&?dz$$Waa_*nvNl}V#FiRx4%>CvZ&yv*_liNdSr66X(bT}3@#J$jq|xyt zPTX|Vs)%ttY;3uVG{te3Q)2hQ#jf7I?@?X=7cEWsF#05BsqtQ+yUn3bi>O5Z0WS&u zC9QU2bxMkBi7wYKVN`I9yI}-@WVQIO8um=@+WwYhQnCvojN#~<6d(>15rGJ=!(46~4c zYwB9W1RVWZ@lvng5gFGA#-6gS(r-V^5uAE65P332k-@bYWx9$^Z(hw}+-0zN_Z_g` z$vnIDDRjSOhaJq6XvLGq&$JkQve>5^-W_?tnfGTi1r-P+%Vp>#P+vKO&ph2p!Ig3t zdAXV}55+7U4+O*$39ayJ&!2dLQ@7?;bmit<7LxghRi05rdQk8-Of>2gjoQRVx0%Vgk}svmVb z+uTF>=CFBiQW(#mZXyf@kvu$IGbQ&DVRyrp$+SHDOu9vc`-gG=Jyp6T#zY%}#f7UUG_r^iJ zm-Ri$E~7~kkZJ&B*17-FhIpHCOiP(WM zs1Lg|K-2(SC}(!`fxykmG?8>fRLG`RCRMBV5bny>-Lx0~kw}Gk!%lon?Ta>pv(Ouk z$z5xtN)*7uTZsGKjO&~FS)PAubC^0(_@v{nJ68}iIeM)QQi_hpyof1im5^Uvmmad{ z^zA}0Fw|Rh9!_LBsj^p~Et@d47o4U7h#-O{K1V9OCHy-<+G6i{BWSpMsc`+ygOk^z zWie;d!*FzWFSe#3D_nk=iFTSzZacY{bkk>ocN8zt$2J8>sL>74r6i#6_ZwAM*FM|o zk7H8HLi9jLw8OAb%XEvQP|ZH=$1vwWsdTu?V%E{6D!N5d-kZzszFp8%xm8PsK*|0K zIhuHl!0e^wpbv8WN1tlw0Kb1XuM*fXFnCrAAq`}lZDot}&QUv8=hP@6tutq@mz9Sw=_J{bb;Ll2WKfn54oqJvleHZ9iR!%%I^+IgR{0D(=tA<} zSyo8}_cVC9k_MI!SbdY>#yB4!DcuR{1OewAjehk*mi95}OKJ0b6gg~7I6V89fcsTD z$@&BL(9cw7{!j*;hX2BFG~+(itBT!StI782Mj6#3A9J@`VP^w8->cN0)2XMe*MoIyLn;UPe;|Lr3Xd|YJOUo)`3DcC%FHlyOa?QB_X2cPnH8IyYIk8H?0L}`uFjZR6ZlHeOTlx)gv=clbxM_{8SSyaMqQ4WW zvS?}eMMBt>)~9>SmM>~~ICS%G6LF|aOz5nT9BoT_%K*!2UJb|iU1?`R2jcC@BpSz_ zatxkDI)(v3U#NwbFQ*-T`#OHL@=<(3po1^9T_^UpIghb1y}Z8mqKrI6 z)5)T(ieu~WQw=kB2{cElNT|z$tDd(K+hr!tWz(um9A944Xm7cD4dvLC8xYzHS zMO((l6}%-hHOx%RDNK&mA5zFuzGvY%7Ww@BYTct@=mrnUnyV8;IG5@5o9(_OtP$oe zc^SVefXCg$id?UM=J6ZQapnx$S1E?Sg>KHrJa4@YIIWXJiJZ<$9^4^s7d37G6?OVO z#07|ePN6$L`~E`-?RNWO)nDavla0W8ee3HxfA^`)+ocbykIjJ5GjLl~4*%v40_|n& zIPC{}XFI`yDOoW6)0UgqD`Zdt@k$>km{eYMFGmUAOsSXcmjokHg$WEe8fhn_duwZ7 zAyR}eRWlWtu=vB=tVFj>pWzT`2sujB5LZOj@N-+mc1tb3t@++O)%m$vJ+AY9X<+VZ zt>qIf^~}u+O)OZQyh@jI+(RsOc#L%%bohd|*!-djv02ag z$8$Zys>0X5i!3H@kC~{{c=`jwuG{@^LX0v#3LIxlH{uW$bM$3D8GZX;QBg-EC14v~ z=ddKe3Q%3AQ0-*G0-L7>9HOx%s7!1RxDnvB5fTRuxxDZ`T`GK@EzoJ&S&Ui1_@qlO zw2I^}`Vg=(;@sO+-F|5mP;8o zG}tK;vxp=*{ra8q{zh!jNEZ2%s!(3e%WC;}+JzUD?P~dd<-%^CR&dhp_GkNJ3$hK}Y$>Pf1{S0D4f6CCn#{-2I~g0byU=aSavHB*-Vw2P z^@{I0v?GCn3Xrwhf)xJ*XxfaXsZ%aLCcbkyd?m8<{v$l^-nLfVsv$}xJqj)xBp9m= zPFK2)Rv~A2Z2+}WH|Eg_Ro@wRm84J6cq_0dIuH$brp3Vg(=c=IBFmLk)vE>dAcx&9 zk%4nYK@8E21U0vJzZ&(5YiBo;!sYkbKe?2gk3N8`&Xic~Jn~BfA|pyc)NSF>#0|Zi zKms%RUytX-Syu@oEUUm_6^2^YqOW*&;*7Q;+JOv5f{bUk!F>z_?KOo1=hAA}5gz(z zdr6RqP*e4gOIN+*VPfD66A~Auh)lZYR^R52;R-MXGu_}>>a34NO7I&dFTHhf%X}1c zUhXl`-VY>j;Fu227cFz?tbem=ifksck7Xl#4D7%8p-=4k8|L44htIo{cAK=g2v`XQ zYNoP5k?GcJ%OK#0zy>G_vp_@CM2i!Cb4yv#BKaT2o>64hTfa~c#1Pk6TCM?(R-o96IZF`Jm zZ~0~5uWk(aQ}<(0apAJ&a3m?L%o)PqkpTD?c?Z3-#r3zYL0jrSf3K_9Ri?iBlkt1^ ztzgp=ENk04zwp_ctghne0D7}RJFG0l#r_b362;6LFWl)zuw8kT2MjY8a&X85BTTzC z9Yv<0UESJ=+Ie#l;xY@I=(RLNgd<QvT8Gj>n&z~P8QAsh zhv4Qq=C?`<{R+2bQ=b~!MpijD{QS7(JNA_9D+hhgZ*{#0YjC(l2vj$)paY8WK1!k? z*c2?|ZpA^~<#9GbF7zM?lu)~Tm&9yPk(h6=Zg|cx@AGk^5&6Pe(TAs$ zl6@`F<|h_+%L8Qk0K2$|{Ep4=kN5L_UR}k%11ipf^K2FsWj({42^7aty2kdZ*V~%V zk@WwtK8)~v3>O|~4CGtnqJXiDJ(rf`^=M&*IiusET@(n*#N1wYHDTNQN1KEYQdFYY zn#Ny&$aAXux*%GiLYw6igB}hyHN+BpC!a@?@MWQO+_`USoiXJ7<(l!!jF>>x`qRS7 z3g5NsRVpkb!!a|23Ve2FMliEWR~6GB`g2{a_pj(IE?$Yl_&Q;uLD+~hc?G}UJTc72 z8Flw|Fn_;;zTL+jW|d6Z(|QV9CKauKvz(hrfY0bZ1iR`cgw2FC_Wp3plo38jPC29&D!?;(B~DVa5~1H19tFoIRA|BiAkORU+BTps6>eY-7_ z6xy%85B&4!IzXxZ9uV35;pClwKaphG9AmZ1?-h` zHPbX7HtNJYbgUabz$)OWQgITYOIBLHr#WcF{iUZ>@9ze1Iz0|^#%@cCk3KnZa%05~ zSDFOpy6pilwNwR#vzVLKl2xAPuam*jCz!hXWcAjxaoNQE4aFDNPz66#eG7a^l;M{X zATnyj`pp*@bpK|+uoiEutdyaK}-tU>k&hx&PJOq*b3w%026F-#Xqtu#ZU~X+}`%|u70ma9s zBu6k{hM&%O@r2?Mie@CyU@npLMZ|B5*69twrZ@shF?Gu{!{*_aB}jQRd*yiY+kY)H zVd}!f(_s!=^ZP=J;IDSCISk9*KD1NGIAPx(W?@zE#gFe>*Np>4~MXq5hTY zMjyK7+d9ts9%WxoLb{GAq%?x@?<;_Fd_OiD5LvyJc-PvB*N7D=&TrHHlxW1ewMc#7 zC367{H{N#!fUeb+S#nJWDSCT>twKy4N*t?GG73>MoyLZn1 zEB0pjN6V0X1nYM}KA~C-Z4SbTH!#}oOebO|i}uEux`9Vlz(@u2&jWjtvnn^!CeZ9f zSH%slT1eKMD3BRBX?QD%Hs*B5@X2LT0@>LtxY}Zt;7EDL>=1gtyk?*h|E%;p!R`m*zb>VAr)g4N1F-xTyy6T~o6rbxKs+*_%p5oB-z?@P zQo>J38ii2F`}tzMBaQrH!RpXXi4|p^f1*5C_C7bJtL5)e+kOSWHMv*?AjaatI>@Bz zZ2$Rw59~5t9GRPJJ-v*Y>iQwm**L|hB>lU9LO;-Yv?Rp@DlfwIw^eFia6;{*DN=79 zt5TiD#Z;r)e4Y4D>+$C%Y^&PJwWO|;pnz4t^aR)>dR}kk-BW=!myT{KjSq5H6)Js1 zR-){52tSJMRG%yii7}%D!O^#7stVJu<8HJ;{kCQOyXQqlQ1?z?52=v?wQ#%L=_UUza%1qz%C|gR=n-u79yuAu z7fk0DA~;Yl^UFz*QV`J^Pu9eX^962towR(f$;H9XyPK}f zEVK%?^)gg5U%b;#it4QI`FoJKZv*@W1kRg3|D(#H99~tF>h6axL<0H*^%{i9;|+3f zV$z1r((D&n8eMhjQ+((225Gzk6y;yq4+H@hj1L zUsv+#<9aAF3Jgx=i3ONZ0G)-F(lT%oO1R~Bn9L`(o-T3TfX*Q6s~U#F_Qc>5HL`PU zYA0@F+n(`a!iCH`DZ$Bl12O=7zO~hC4vDXy0^9j zG~)5Ee&xeYO3+r#?YEZg;lrn*rFO$E%TC2K6})V*Lc!Lu-;Z@(I;=R=4-F9}gg!I; z3RKZ9mD{!_Yj-Fw&eb{Pn3rr*drjj=#?6a7f%d!MUoIjjAAFurvtQ3g{|{~d5GGmM zL=B@|UAAr8wr#V^wr$&8wr#V^wr$(4`ty0e!9P2L@0>Hr9PBH1X6!pwM6ST{m>O6G zXaB8twgWs-RqS~JKMg3?X%RYAOpDxLD%l8YRn!e8%y>1xtmc?=GkWaN)orm;=cPM= zx#RY{_ZR3B*RoV6ScpPFJACWOSZoh^T9m9smZj)#Z6POU9=qa3#v{L{MB~WYwapC)FfO|Jq<$~H!t!L_VaR}4BTIq=FPv_Jv*xV zvGVUQ1iMDm*&T>*nKyMfloT)maFt*&f^v>x0-%_~CCxla*8tX0GmGH@rU z-i#%C@7B8JodrsG|9e)xqJxx~hssDVmKrQQuO8ew9T|~jm>G>qP@MGE9FxGeKfgdzh zf#6AE)Iab!rQcicF&Q#`Givtv=hN0%A(Od8{UY(KA7%d&Uj`P&_bDb_SM_EShied( z%$DceX>kGj6E5pzyPS3aKuEZikSwU0&2ww9eARLs@#S>A1nDNmbJ(bR$G+JIZ1%c2 zVBA$QzxmLwV43dl5RWDK&1BAU>nC!?prD?&P$1_{lvK?S9Q?+Q#bHRgBvnLC^elXqzL zgS%wTC$}8C@if5bHzi|x`bvO7o>(@GrHfc%4CiWmKf-;av}5a9?2P7M^^C_Yc%>}c zCYr6V5MS!kA{=HnsZsO{c?NmIA$?nN*%u&n!@dqIn5-59g2|o6){R4PzOMO4ff8=y zAEv0w18yzIk|%<0R%&kVP_-R;juKtcFQw_ewWpUA6-M5KGs1MNyN=-DD$D&I`HmUv zd_R6KS7ZFT{W#DkPkz_}S?bahcv&UJ?)bB}8B;tTTAHzyXT0LqG`g7`|GxgxX?!bE zf4A(Q?yVR{catqo;)N({QFCGEmZXv&)Y47cF*nTFKSJvWt#!uwxha)-R`V0ETaVJh zFUrJZS5EDKCy#IJnN;v&y3c2jfk!DenLp*F{8w3^1vXEdBY;P5o+oPmHLU@{3VHSaM~08)G? zzk9E}c1r8z@*9C7*Pg-OUD%^v+WD3>IxaH-CY~WkoJyv>6-2Vywy?r?%y_83MpNjP zjsr|Sr_Za&(gjAL79<22;l4!CN;jO@#p}bc;dz!OMW<+eL6Pi(2ROLSq8{ zURzWOA%zqBTlmHDCR?womNG@0GjPaFYM1=Og!h|^t^F7SZIt=|M&y`ADS0TO_d>WC zKXJsz*jECF++F)|yWK~TV3o~szUpD5hT(%>_zUsx(mUTfB}O?c=yxOKN;Qw%t@&2p z$y+!o!*}4tAlg+};LTwf;`P{u%6<{EZX%~P6YI`sA;2+wCD=F_+|z~CL1&Vf*L%Hq z@nv4qhz9`BhT?>b4aau{7z%cUV+xW`%!mEzEDyLFQ3Hge7hG4GDcUqYm=fPC9Y>|H zWrXCTY_4xdQC$l#VkbBNJJ#e@aOO7@@v+fH(L(iDu5%YGZAh}3lD^s_=i_8=zHu=Y zamLs+4b6viNv z&@_LicAIu&@(S_()F=9o&+aUt3Fj48(zkn~9FgOSnR(UH9MmAp(Wk}6avT6Lpk&SY z3Q8&*YU87^=k-J@wCOjQ!L;4@8s+`G!_xM5^BU&>XU1L<=;_?_SINUmy%{hgG8+A9#vBGHB>A|NOA4m$;d&VdEu}CO%8A&5pTK$I z(=Z)BjB^ymbEaC0mThp{Q^@{Yye40yc!!E~O~>N7_^O>w^6xH6*Ius~RugU$Q64U| zn(JDK5hvko0>Ig)%RBpuu|>R{l6;JOlO}q?rz{1WZyF5sBBm_Qa9Y^3Y5Eg@Xl=c$ ztt3OE-z;A}+|}z}5Be2Pyxz}As2n{t&1bT{OtsPf^^Z#^5>Ed|btp>|$-hoJ?($K; z|0~`x?sB`oczCCt4*Cg7)KsSPKKg4)!(=33(8mL)J3H=>&%AhOxLFzfBJC?lA9)}A zIwJV@&>L6*dt9E@)GRS#cKHLIr1KEDB4MhIq zpYFirBnxo5tCY{|L0*gYf{Kfrse?0M%P) zfK47G>2#>mQ@!*0TpIKh-7S9}BzK+Oe6#{`sw30=C*89->%%$f+fPd|DN6$~#)i7^ zB-@#Wd~H#J4DN2NfQgIY&qYh%->UeDNZ^vQ8it5>*r#_LRWSC zE2MRgdnueSDxRFpT{_ob0sYVFbm`D(LRmypJPjpj`uP}Us(yv1!>XQrd6_rLI@F>A zv-3~7lYXUuW_!0b$z!1g%zW5C05YYTB+<)xU~7$E-#hj6Wop|kG=Z{Jw<>oYrz+^# z3lHNfUVXS7BK=X|qc?Nj&TO^oijB@U6PN=F6SXT-)HkZTZ;#EpI)TcRi3$B|a!7PA zB5vmUF)^r#Fn97pFYKK?P>~U_Z=@v|$Zu!Pigud^KwXy*FsGxS?$eA9j*JJ7^%Z4- zAssmRs@QpfT~3SOc5VqlOIGu%WZsmxPGv?;qGYFQ1JZa58Q`xcit+$H-OjLV{8rd^ z96D4D1T|b3bZxDT&UHWrWFex2Ed`(yIHH)2IL7RDijxcnS-AI`PI{N)`o^9%S8svC z{w)C6!kK3S(q|T9Ix2;dUNCxE&)<6#?dx5PwV{K}> zw*MKHGhU`vItrE@*BxGYyoF`V?;h4v)yMh9V@8gOEZZY>5+?i2kJC@;p;Zxc=-$T` z9lW#lrfNV>TyXP?e{(A1nd+FzxaQML*;e@e^QuadlfMP$9SHe-(?J^t0krS=>4!PP zPjRRycRp!fhcx{%(`l4nLN-ZcIS=w^&YQ=>F6A|+pEC$Pnnr>L-jzLDSdX41=r*(a z{QpUSs<9`-d5H)x8FPBsj*6-P_cF4C;%SgDp$k zNcPRG8w~te^ZOd|O}8l%-jgMhABe1_dY7qIo*UJPmucnehiOVG#TkNA3%=yM7-aZ; z5_|;|o%eXTx5m&`;Mfx|1fK0+&7pVtl|dUM$v7Wc5{qHUbG>3>{@y&E=uS^v*P+zGK%gwGv7w@%p#(L`$=PYhhF#RRf0d~Q%q;` ze0pW%#c}`dF`2Qgv3ALZEeW?MUas)a4JyMkt#+eLuIB7nq4pWP-t@pKUrr6QS#eof zW+tz=^0l)(^JyTL~@0CXV zKR_4XcEgs5L~In+x4en)n#@13&phGG(KE0=or<5C0TgSUsF_;h0a@R%qNv1fjR~f` zx0jK^icQ=D6@6LO-p#kJ`AMN;H9*^R<&RSq4o1XI0`uO&n~!=gy8l@7 zyUA3wlz;Wrhe+{IIUmrpnom#f{9re9xU9exnGL zTqO$H6qJPE$Z<#c1Y>Ck(Uz*UR)u7QVo?djqWM55Majx|+A%GXXdgYI#G)UkXoDX7 zg|L~Ij-HjD4&N1?niY@f$*hyEt(W!_&Kb>PzW(!F1ZPUgU zEfnD#?kl?e&fGu?*VXY%i;mq+b$*g-SEl#bz7PJK?0}IPjD#0z%CfUGGB|8lL(mKS zvMc_mx)(`MwzE)PYuJU=59 zqP5OYuq=?V)a%h19?5SsCOtB;WpnJ5R@NE&ElxqL4kXTgkdgz*7{PD*woAq`EKQ%F zWX#M`Nw~_Da$*W6onXk)!}Opg(fNP5O$1`@ulNh+2KkxT(xXnH11=oPXq&XSELtSV zm2Q@yoN%8~fP23iw}W2B0XE~Ok4bC<%<|Jyvgl1}B+a)T9-uZpn-JzydkL`CR_?DK zGu18iPI_O|@uPC)_Q>Ht!LN8EGN6<(hhAOs^jcE@{tobqW6GG`qaqL)6R*jKkM$u)3CkoCYL(mI4Rr9&Xhf~`U1@GIZ`PYRzg-`T zoBRL`9O=LV3N~BX<3hwkzf&}N|9zK;VTpzj^X{>*Ai{@w)YTMVi-ulR`A3nf*>B|$ zih;Z>lu1#LhhF$Hf4lSLc{*~-laB@p7G{8LV*&0mq9OtMI^0@X@$(X>I`3I`wp&J( zJ<0sI(Nc(q1z$FFr42PzRo|@dAe)cBjF7dtXsbqg4ivMkvS5 zPJ$Dh)RIu%rS=wF&X_El|Axj&HWWWlG~ILn(vFu{GL?7XZL280YHLpX`GEGGZ8e?Y zadC32I5(L;JDF2|Y|I}#9VF^$RAArrO=){`ZT+H`5o`daQ=>S_U4XnP+`g!Vv1)eH9zRP6!@3_ zNjSNOm*pGVkh;^d1KUTvZ`Z{l0R?^B%FJPQiJ?0J;Muq#rr&8$^ZDLt2um0lmtpZf z2fgWYS7ShxSgZtH(wv2K>(F9%qI{*kctr)80{L&TRT0V=_1UMJ{AXH4)?tHCy0*<2 z2oLb7W2+6AgE6jmy&Jdwk;h(8Q-PRPC53=r$bT12+e54=R+St34`{<>EQLJd-)&Uy zWj^}iG`YSPts_jgcqQgWPMiF~s-|Gd;Qn8Z=ie-#Z#L_A>rSdhIN&?ShN;%iy_s9)T!%fa!G+Qfw zIkW$rWK{!~2gaoZva&qbV1k;Ohnzb9KS#sle)Zd4D%UC1juz*16vgR|F~o=n7Nl7F zI=I|5McF(he<|LZJNvlEE+PA%J!Hx<2D4%nKTv6vxB3*_ME~IBnweLa8CCYu5{J`v zf}EwETMyvfSDbHOgF#>xiglR_iUzu?O+cuN;*OstZ8>!PgqU>d&}Kfe2jZWhP3t!9J>vN<7IJb4KZ z+}j{QRlIUhVX35G;hzEEr(DdPmoKe&(o@%4xW4|}5n6s1q7Fy%^d_T^r04^5h$*Tj za#&2_e;7v^>%+yC-j+JTd9GyF%gKCMs`sg2AWx37H(#5A|4b^gm9xs8fYYisDMJhli#ED; zO6s>p3PSb7_3ga8Xc#V$uNjq*=pBU%X#@yOfB<1BW)#&wc0f#8@5`vKvYFdt^9r5i zdw53`-M>s*+M*$MFT52+ugXM?cesBW}0Vwd_{0uAfR=BKZ%&3S@8LV&nJS3Zpu#Sbf~Ec^=WyeUh5Vyu%n3tRD#zI+(==d+ zhx9K*D)g?I$KHPNja#|7p?K3FU%rJ9GB?ujc8IB?+t^u9q_EG+ zfm?xoBQHbQ_ZZfHN0`{G!IW7Ga%}pHWntuSn5@p|bF)qP;~-}QPEz05UAnP%k(8sO zqsTYh()L>oYAOX%_6`uHqqXmyXaxE|4Ck0_RN4tYULPj%Y`WGo>$2A!T(JQN@mIq2 z8(a4NCPkE_*3;}3`yU)%)c%Tik>FAO`hc#d97tN(%S=_U220Jj4{-QtJMy0q{Ma|2R-vy3c9P#N{;G7ZPqyz{_QI7C6}l zK%-94LCH=UF)#cVT}&F}XBRg$nd|DI-D{_ulz8kwynsz}lT;;$Wttl^g&Lu&LyIW6 zW3ojO3D`iJC+pGk7*9JsBivxk9X-I$_>4n?Xv6`{<1ff1md^_2u7$%tYRFr5`%?3p zKm8=e&$9%hdeaU{;xoeRcL&wu%2NUn{T%UHG7R$K=7Q^R*KmaAp+e zE(>Qrx$-&v03bdBNl}XnF1a9_CJWK(%3daM`Z@cZ2$wU~9B5_MtT1<3I(wN}Pv#&4 zmYHYuOMF=OU%C9t&eXOKLerLpCGreae>(Tcn;$Y4Bu7>@yG541Tx80fA{VaZW?VJU zSN{EsnxXV$6N0^?m2Y7|vA&&krRC-IaiFkW{g14{NXo=Odo`fkM8W_>IP%Y2g`>6s(w=ksGzyqus9B9!7ke*a#m=V&vN( z5wo72f+qnngf^XmuO_PJ2;=6AwV^Ziexp0yW{f;S5zK?cBi;IE^u~Nla7?Iy2#rW_0*-fNG+fxkxnWRPvp zH5f+-FW-MPVl_lTh=N!J(K37s!etOI7)%H`KV&s(R`8VQneY+eJscPUIGC^>!XTPK z5Jx19XcFNV0y>zqAIbs3Af`@mmFN=T8A3c5xgT>cP~gq$HVn}g!YvqlA7Y=PA9*i? zBa|cdRxC^4mFN?J9PvB+*C6Gfg$Thu%s$ON&OQ$jgaZ&_AcUxnNH8HCAsul)B4Rjo zcxAYR2+BSd5tak41F!=!Vo+O1TTEL}TU5B{AmKjZ3nDxMWVnb3(mo*(WWD2x0+- zVjzWRGT}HPK4LBcYPi&(nF#7WbODxPP?;zKqD#1^2yg-7T(G%V6M+_@O}MKFcmeWU z$f?*PfhVFKqEEOlkLUNW;~IVs$8F?V{jO#dP?j3gTV)?T=5*I646!lGK>H;bdF`@@EDY!hVD-#7bt6Z9WJV&zClPC;!k{D#*w`+>lIb22Hz%?Z=K8B zu@8dPL6$|CGwOb4Z^|guYd^3wX{VXHp!+P|>GQk;KMCzyTl&{Gl|(~54?fWh418+x z@YXm#{FqXxwcYPCLO}iYD#zBto$q85tP`8`_WZrP0i$2XUAEQPw=R#n%XcdCL&uG` z$j+^m2MO`_nXh5hG-4%Tx3O+#$u^ODBXrOcdqd8UoFOR z*u;228JVY+`XCwItx|YkZ2~JZY3I9st9aEU->dupvaaTnc&jGa(AL&wr(Vy=0Bg~Y z!h~rzLh%50-NAKq$C?##(k-Y!ot{&p$!er{t5x=>S48;sSYi(F>D2hly>yHedPom$ z8dr9{`e1Kg<~h`A)!ZRUEf5F< z0!-}sZ@lR938u1Gzs#7seo72z?%%jk*bX(`L?8OXeh*UyyU-r_8YAPb>+WGK{7^Pz@V79yA)Af2JO4? z$lFYSjZx^dwu2~iX}M9i$EoN zYt#$!dm%_^ap*$Xwu2UX!N&1nGzZQny@*g1&F4p7Z0SeFVkC!HdbF1q3uq>ECOjpG zQJ|;FM6O*x9i5AbG*&_>TzAZu|A|E$@5YU}l`hEp6iRt4D7?u3jEV6&{Y&%8QTn+C zj|usDD$sg2J)`!D;eF9sbZ+umB+yGMCj-uBLf1l{kP;|QOSF`_B%Bw>SGa%LJfc8& zU|0TD2TIjXgzh^0<3H|556i|4`syvb67+xp$A^BM(`nG>QFf1TuekCYO5d|bb@%jrD#oSGipww~m_d)^xsJOX+5woW;wv6K8}1da~MEY9{Dn@u*fOI<0@l zr=g(eO``&PgRRv#sYzL>whceGKHp;FrkVW9JLHqJ+B;YFM3`scaVAtDjl#{-@F(aF zR2jeT73tQxwu0aDAIE_Y#Im>!EPU2?pmTf*TFgJ6Sm##S*I9ZPu&|B6i#Ldm`36fq z0kfxZvw0-qy`!LceJ&4F3#FX12rZ=}Q(izUJes!F?#*ae=OMM5eonu!-Z?l(rK0i- zZY>{|Y$|3sycpZ?dSPOsdWLkfnvt+T&$cJa)dI!tQrlxLH1iaDP9Y&wg%6swHn#Uw z%)K#9aukw($Ar8QM$iJyuI?!3-}K^VaBOVCZo>#5`;7|hiouz$qxOc-=749=_%TM6 zj0+^W_|1Zc(U~{Q=_QHnz{@`GIIp&t2`81>4Q?Dg&N>&fI8+9Mv2?RVWR%|HWw1k- zXh@a|HyVq1!G0K;FKeh%K4kuyQbR(e$!yPmGrx^(#w>%=sR4Pg$>&_FR;j(=X6c1! zK|+5FJw_V#QmV|%^AH(sbm=oO-_vgKyVxF@-Pf({TN?nUbptn2eh|$s-W%Y;<|Z@8 zWK;1=MFg*&C~}_sO`W&I;?1tN0MWFbh3k`x30uA0AujZ`mH$+ArG5gRo6l-Yk>xcC zrIkx6IsUK}ysYjlKOZBV-wbBAzB&h2jho#YI^QFR{Y4zm97{Ai{Lxu$2o1FU{HECi zh9#Kk@)XewFO^T*<<{ONgxGX+d%1->2yGKGe<^yyFQjc$la_GFWp1{L?9m;DxsHD4 zG^5Fay}p9?clY@V?2237UXS!ypwkxv!>moHvzb3zzMHA(gKyl(M(g)gx`}R1yV$I* zF>%UIHO9KtnfMZ1h``7`HhB_NQhre7y|>yS>S_GxQ;#Jv9BvEzc1a0ff!E#>&Q9dA zKv-PM^u+*m9`QSwljr0w=glaM2b*oYQ}oTZLl}riIQM179Grk7> zN78P*RW(CcJv3I`!-v`V=rwH0>L|ok?aFs4$NW_Hi=)A(45)*Y=pshvSh!W^fNtxa z>{PA3x4=XjYzv46Jgs*^@I{r@TR|1U*{lp#FL(6!*4sKUqy$%LLrD z)*py1VVkTc{uO~4ttY6H4Y1ip12|#vW5iQJ9!AJF7f8>=TT8@O-BV88?3DIhyho6{ zQnJ(nE=nOg*9C+}eWQ<^UPz8%m8#`+8^>^-akH+N&=+?cs>f9jR4(g4r5%$5+tCuQ zfI{I~8GD)FUebPTf6~B^ac=J&jq% zMaPA&4H0(<>#k4q_OtIel73>11Ra6AR-Rbm$+#e^%%?~ZciaBfAh8ds=?sCebP)Aw zRdh}uymm4#+b&bWUa+Xb+>?84EPqzBmn`frE&XTe4VNc$Kl?Vf*7-vjXpV9b)9M|F z-O;}K;Eg?Mj#2Wu(jF>tmnMlJ1HF4s1(h!+L*8T@hc1D+Px1VBvO9(TSFa-0d%~_> z$Vf9={LuReYO9x%yg!}I#gbDYr3${QP7$_*)XCMy{Bzs0V8yjyo?)}IeqEpJ4m4u4 zu|p6|93|hdUpu7EpGG+FG@F%mSJ}UuY3F-hTiysbeaBcm4&qjl1WmqG%46o9NI7t( zCvv+rens~_gX+4zfLg)zeE->)eSrJjzBB5i9U#1?n7iPM-Y0sNH9Njw*H^*7!>6<6 zXV^`F_RT0rB8t;Hf%C_%kq>G7kdDnld^*VbA!Zm@>PUg+!l~6@!t7N>FIN^n4HEyv z5BkbLKZuG8`!1_8EbleZu4(&1v4P~g!_4bo=u0u?M>*_@W!nJ1e=fgHk73y$N-1Z+ zAp5fJXi7$h7DiNa#4?gDbNP=^HcB(@+z-Q~@|?j73>0VA*i$lDaC#VNyY`ot?6q2H z`Pe+g^taDqglq(t*2()1@%d~-4kn6YQ^EzMECh2Lmm~RWX~yQ;S3a3^p`1d<;tJ#V z!KngFL-do2P_oY!jWtHaK|doWmgri#>d`PVOW}_PS&))b6Har_t{%LUtiu6l=v2L- zps%bZa#_?DK4!9#*1P<}AqVk_a*C+!`$=}~TQXS_`+t9acH{8=(dotfb;en^8Lx&p zl>#l_ox`MU*1&r#3O{x|igv!7I_MR$+dYNgKAJ70Rsk+wfNY+t@uWM*eCjmk{1{NZ#mgp6ldnb%gyp@#v=Q+1FKP&f#2q z74bL*s#9#s6W-lA#f)d<5GQ`RsjM)XFICg|!(VLFDoEMNv+Fl^jb-m_c3dU)u6_B} zy~)UUUX5%iNUB%;M6H_+^MQe(NMI{Qy4 z)!6L;*4m3f;3I2X#VhU!9L|9X;*=&S>kfJX%`z&779vx<%woUZiaTuT_Gy}8lM0}m zhycZa$AP<-R4tzmtE(_xX?uQgwY#xevpsh!+SYnupXL376&o?SHn67LbG+y8rU$wS zwR%I&y$?QJs0}ZsPV_6^WU3lX%1HxybULT8i-gAXBw#Pk_bj=qffD>;d}?&p5!P%o z{<_ZHr#-j;z(&P8z4uX^QjflH3MX5@u5lUL+|5oSB|+0q;$vXW4;ZkHDpYnG&FaaW z6(qh6y>F4|x~bhbZ~Gt8?xx6~mA7Tg-YxQ+eGa^ft6S618csPu4@>tX^tZ?japhr~3MmM$Hiw2;_L4OEu=~ z9YLW7ZwK~mVtL9dCoRZ1fbmDp=n-vyt2OWCy=^ahIYT<$^@~dL<0*9^TqVof`J&>R zmv{7Syy1%T=m}hzjwoNn9mDh_jcO2`xxJdT6R@KrTE^MLXV9iE&7m*)w$xDUP0j2X zZ8-^Xgt|oX$kJcmcSl?(7^l;omgzWU#C)Wg<&owtsr731P!25HksK!fwt9(VKWRUP zF6P=q=s;?|5G-;#LT=niaN|g&qU!b2?=DLHk_6Tkeb(!kW@6Q{&^x~0_uSmxjM%p4 z(OOh^#caJ3BJ+z$E>DCLl}X!g_*UXHJ;}Ae7cAGLecIh3AW@q>YEma z$J|wrQQwkA^r)$zP@V{wz<$T$xw)l`If$)5#K2K=@~#@G`}`9KGBD9#yfa&fGose!#dwXdV3`jNbcvV&`1{RkRO@PfrV{^_YMZW)PvF`UrWT055v zw1z`X`RDe{LB~^H@S~X(AO99=xx`o3vYF8_Z=TBd$Z5}GdeA^q@?(p*@GrbseNOI0 zznWc_ylhvwZ*cxc!9UNdDjS8BQH+6qPQ3pDnCmT%nq|b_y7wC5l-KBQPv{$e9?59g zn|j@rB8csB#WXiyw`b}&x?`72XthJ+cf0&QMLgk7u4{pY-SAR7Vrnc{wz7yf2$(L) z;oL>Ve3o%;Eul9l~4rYy(b=O-% zkeAcJyVH*FVy#ETE-3k$_vl2v!1)0jD4T@AUi=?>*OEfvK=w}R$QA??eED1-D1wp)j*@$>0{&p zJGWz1hEoeV>9$AuaG@)q>%-8>e77^>SANY#kF!1fANQKphSKYC&4`%PgBCr<0X>NV zFFq^dtDfnmR4{T)FtPXj77&-M@<(^1%&PpqS5EciF&k8YHEz;b_7y`tOfx;7-|x_7 zi%?q^#>y|(ovN9YiE2X^eH3JudrsB70e-Wu1G6RK9_UOibmr45dz30&shNJEZhP1* zGI5>YHp#!QrX$TPbU4>%yYKq$4{O3@Qn7L5u~H&%T)1_7a^pK?jP>$tm9OmGguMaX z(L*wQQm{)=S&x*U-Qtt{S|)mmvVZ#B`3nt>sv{SO*@{1WA!_v1cpk4jChPLu)^*62 zBnU$gJW3k8R8Q>PpgJS0HdahYE}(OdEI&HzjYXrdvPZyr^+s+g?`L{jY#C+C5Q&WHQ#SU0;n<%%&aipdy!G$Mr<{yEAc{x^0VwRest| zS`)iUXPW#;>^y8gj>smY^m0RJzUO`QjJGBw1Bn zFPVxyQ~syk+I0f&paU2W@)He}Gy_TLB8Th=Asugp0h}t8pR@UVOJEMEM36pZ05?oX zlwLXvdsXR$3E1d19Nw~b%Fd5*IIp+dja+D z_+-sd(>6$oy~*Yrx&ym4`pD17PqWP45wtef1noIYbYFfX?LzSYO;W-C1XO{C{wKit zKS5Vl*8fyWK~y9dMZnCRob}Y5k!1}mYzf>TE3G7S>{*x}%l7aaC^=kE6EX!#k@ z%aVfvA}FDXa7Imy^nY7=KpHy$X$mlYfPo>zyXxzY8t;N6_Dg^<*Qt@H8KW`(3Q@(- zz`(%x2_S8*Lf1QKIEtHVdh;y9H~tk4n>=TzuOAO$$WZt5+sI%ZZk4u@WQocCmw$BY zkG}<^%pg#wi7HDy3`QG0j;?XQm8*L~`7c9)xs2w{SFHf=0~<1ATsWC%pvs^*eYn7Q zF$Qq1GxI;?VSuqjs{dy!f&Vmd|I;J> zPZL)LAQcRw?CfY_U}NGaX=`eSBx2`cXzf8@ZDDI=Vhnh3at53^cGO?hB7ifuq@x|Z zx$MCQ=q;|SifT?I)x#vOSF7B(mU5w%*Z#*aI!VQ>*YvVa1@8Vt7%R^K;g)A@yTF65xG0DDASiGfhW4${tL{En^Zar}7l?SYhem;3bq@-qFZ_4;EQ=u7M+ zB4RD64G2p#3kWPXhhKh{9twEm1moR_%XyBJuT_#|p_0S*vONbGijb`CrhnV@f>iML zKcsyvVU*ZCZ%GV}X@=PHgU2>f`WmiG6a^V{B5<%YiY!|Q2TZf5PAl`RS<+N`ZqZ7X+LFs{V0Cp{axfkfkp4qrB~*ARp>+ex!W8MEAFh)(C`9T z`_NPS#%ufVbXc2%ZxyHg^@BX#d_J`Z1sVlz+q|fYCl!^ZOAoa{KU959t6jYxnZ5IN z=D3C;p2cj(BU|7g|H?73pps=EJ+(VB8V2>>PQnfMFO%b6lr$O^ zfv96%Ros0G`W7+y;48iv&pIe!uAFQq`puJ$OR+@R&xbEVKd&Qpq`hZZw~Hayl-`Ym z;O8r8rCVI`TvZD60Uao4w-B()R#VxFqIRvpY2rbd9DYz@i&hdwrqICtshSBdB{C4F z7}!(Ud^Dw)ZKhp$RzTl;0o}?Im}Lq4^f1y8nSF3(eWu;&I19Ba$64{aSry7b>9P7; zEJwg35te_5XF-jCHQ{_(`@WbT&8kCZ%Kz0ww0^$^S#(wV58o6rdYYbgALn3-18kT8qlc1;{Ojk+K}BnCMC6Juvv%6ncJ!8jIz|F!JF8YcAumzhnqJVxMw&h0I|)XN z9?Xew)M>3ePVAZ_Q18Bo<>Ya-cdlwdXPOlL6$-??o~rSCrV-@Xn3Ta}WO^2+DHzNi z6g^lL=Ooxu)xva8fi=`qDeT;}v}+yc5-v+~mz+juEbDESOxlCu-tvj+how-oQ--b= z{3BG$5)vrtAKe|+K<~fX50_Wnm(3#OYOxoY4Ql^#3*jP}7bksIlw~NRkZ9Ioqo+3J z6U*mu^WQFX9BFmf>%K<>M))kkjxdTat)?TUzd|Mi2UbvF^$f7Kjj-r0SROl1&=1NH zpm;;@b*H>UAzjy^CZLb+>c0+3u!D~iaXppRgppYq%~Npge1S+TW&)aGVM0j*P)0O39rR9%~99$fd*8 z(+V27L~l{Zd49^2QaM)%`w7DKRE}|-fcoV9>y?Z=C9DGMxTvF+1mN;;n!3u(HBGdL zN{));pob@_{%BXlQdvSofHv&t==vvAxl8MU?saj}K>nNQCYwtR3U5V4tYt)$mKn6j z4)=XIoChTjRv1pKFY;hpDTc6u9CqO3<7-i$Go$Oj6LjS~br+wz11&N7d*&`y8l-yE zKe<@QlC0lJRL;oaizZyU--ZWzLW0C(^U>~SyV!m2V&0)i$V?BnBaIz>eS-hDHTCbRc>tWqjY#Ifp!P~4%fnp(p zpeS!Wq=Rlu&eH z>Ee~tTmbf7096uz(%%F-pME;>1P_W_9$KLPfY*9=UU!I6 zs!G5FFR7{fKujjugt{;}0$*EyLrpA;+GajE*KKyp>!IL^Ul*_#cEC&wenwBFE zPM`|GcG#rB#mgpYdEXq`=EXj(hXfWo4{1`+t{eSK3X>Tl_RfGI^3W6dZBMX}J z!(0N|R2CJO?C}F?De`TDz#ZejnKO`=4s;^3;peytLAjLBjy-|>oE3>d2F>U!Pf&xT zVU*%uXwNRBtLnc&Km;>__WJNt@bS{65IAu#LQnUU5Qqc+K>v|Y-Rz)`aRdlBrp{-% z)OS__rONv$@A)cXpsB8QICRCM4z(vi#HPfu9&lNVk{GpS1pbDCh zokAfeOZIqfu6bS=c1h186Mh&EX@k8z{xZVrgO5S-rLe>jIguX?!a3WcjI2S;c*vj`BvT!{S%Ew@sklx z0JHJ6@R;fNkGX*E@3nWXyDhn`(((Ws@XtcoilGGZi ze<#5KmC!s4c*`!uE7>7X>r0)7lALUF9ucP|Aq*oB^i2JIWFR^9>%7$DHK8Wf-S|cd z-vtIMA>B#qyHaF`@fLVbd#qxq&HW{}_kp+tuZ_ykqcIw(4hdejh~3~(*QATW zExAH&<*yu+algpI_AEgcS-Ks6i!Nq6GbF%`O^Oekt4LQw7P=Hfo&;KUA75rP4Xj2e zu(BS(IzA_x92s2#{tTn{GNHElve$osC*k8Lk4D>KeD>4k>(1B;R{lPIl)x6lVA>v{WCjvS59apBC-MerE(7kM z&5o-F)l*9r2@`FLfA5!qfm)8&B5`F=f89`Z@I}tVouYaq&r$Fx9yLRqBjmHIm)>Ko zyBXXJlIHjKY1OK8Fqv!@bm}y!&yP`I3(lWYE5JfRC*ugi0D+_`uY)0ULmbMB->r7H zCM%<)&L+V*9yApNj%ENojdC$dSN|HppZrC)U45Yx(Ubb#$~E*A*{~++V)rN?k8>&jh+or-{uy3NMG-o ze6J+P>3W~TpS?(;#jNR81D`PPl-5bfT+c{RF?ou=_t$R07U$qbm zirq3RTn5||c6i=(BPag+@Yv|+=t#g9dpX{ivk|&2Aeu$i9b$rgKA;{m)ZSj0Nus!_ zbmoRIEDR6UnPa-n^b`C=uM#hOPNFZhsIanCMPpDE3(ZRvAQ`WWg?v~6v!6d^k4p$v1sOv0Ihb4MMmuRnq8hn`re(9#_WiX^EB>uhp8l%zQISUl@y66LhaS zV^K^Mr8mlKu(pDyOY^bV38XBR-kTIne_qH9r8;-NovD-exs!n(2lenF8N^_Q2J!P^)n27pVEThx+7D)I6$>8lHbx9)CEEozxUW%W;zj8AgZ~*y%>-5gnOVjvzPKwvf!y z^0F$-d5e5Y`M#)P>erdaW#;jejx^w&QZq`?!2?fd#UxrYO(lwC!U=xbrTQ+_d1-=- zQp+c?lbLF}_3&!!5eth>)$n~@7`U2cLNbne&^=MdJX1&uQ8%gIW`qmT`EtIu)bylW zLnha`W@?_j>c#h7*3hn)WZze@W`OVkm#1djtJ6(^Ft|hf%ce?S7?km^o3YT|ryAwS zFvQxR&(M-Nwax;;5ih%k^gT@R$#OdN`i2qFHh@3&*h#z@Zw=_Z7*z#0TmGKm28ZoC z)2>H=mPWWjg|7zMpFw-X?uCiw6o>F>m|j!N>0e=F%De+E1nl~&VK1O>; zU;MaP`Ybp6!BNuJ3#gg!1>+g-Wa)2NODFPoL5D!x1sYJ!ejpjaM6rgx&N6B$q@}5f zP+5q9CuZ>k>F6`fQc85RqNJpMk(9Boo8Y@C0b)6AQdv-bA$5$yVoGpw%E%I8PVu8p z!)3m(8dUs{@f=j_DBD>S8`PGH$hmB?6~%8fxF?G5b5AsV@j{u9_`!$A9>x3m(HM~f zbwUxP4j2_|EPR|d(S`N@D9IShUM|hlm3sJdzVV%rgD|-Q zHHe!&=%bO!js@qI+vfBO!X$TpSApVWC5zEBYo0gZ8_b$BCFAoke4T;HK_Wt0KZ@BW zMH)gjCcmuW!Ujhzh&&Mmj@xge-oLNppOiq=1R!ylu}pwpoOFTynF zS$$?of50Wa*iY}|Bgv3vQmR~)C8s1x>=PBw3R6ysh$-(Zmiz1WSmDVoJB58Ow&?pY)sJ zkj-?sO`KLs12b#&XlR$OpLP8CcwtDMSTX41i5fyX(u&U6+E5G0s^MdDDZ8OH5!w_r zB;T2Lj<;c#4M;qa;N6KBZxaji0X)L=MKhUImLy8>#=5>e)%Xlr=UU&YB$!zwqc|gl z-=1py?SKiWQyU)kIZ`bY|1eu zNV4cxtxiBiaTuYN7gX>u2)-OR4s$y)a+D11E!)3;`>T8On@N;fu<(B~C|x)w3|yUN zYSw1*1kAQOP1C31Gl=oO2NoCcyP(c=Ki!)DZvmuatYyy#!xG{ozjKvA5kaT_pY&8;@t>0000)00aO4018$W5c2>!00961jw1j7 v0AvMJMrmwi4rXs*ZC_+%ZEr4eZ*O!8XlZkFZ)b90ZF2wt0053>cQup%#47tQ literal 0 HcmV?d00001 diff --git a/tutorials/foam/foam_demopers.C b/tutorials/foam/foam_demopers.C index e16e5be33a9ba..1e4a024819ea2 100644 --- a/tutorials/foam/foam_demopers.C +++ b/tutorials/foam/foam_demopers.C @@ -49,13 +49,7 @@ Int_t foam_demopers() //N.B. the integrand functions need to be reset // because cannot be made persistent - #ifdef __CINT__ - // this can be done only in CINT - TFoamIntegrand *rho= new TFDISTR(); - #else - // this should be done with AClic or Cling - TFoamIntegrand * rho = (TFoamIntegrand*) gROOT->ProcessLine("return new TFDISTR();"); - #endif + TFoamIntegrand * rho = (TFoamIntegrand*) gROOT->ProcessLine("return new TFDISTR();"); FoamX->SetRho(rho); Double_t *MCvect =new Double_t[2]; // 2-dim vector generated in the MC run diff --git a/tutorials/gl/glvox2.C b/tutorials/gl/glvox2.C index 0aa4bbf76e485..8fcc5cded7b87 100644 --- a/tutorials/gl/glvox2.C +++ b/tutorials/gl/glvox2.C @@ -30,25 +30,6 @@ /// /// \author Timur Pocheptsov -#if defined(__CINT__) && !defined(__MAKECINT__) - -{ - //gSystem->AddIncludePath("-I$ROOTSYS/include"); - TString macroName; - const char *rootSysPath = gSystem->Getenv("ROOTSYS"); - if (rootSysPath) { - macroName = rootSysPath; - if (!macroName.EndsWith("/") && !macroName.EndsWith("\\")) - macroName += "/"; - macroName += "tutorials/gl/"; - } - - macroName += "glvox2.C++"; - gROOT->LoadMacro(macroName.Data()); - glvox2(); -} - -#else #include "TStyle.h" #include "TList.h" @@ -124,4 +105,3 @@ void glvox2() hist->Draw("glcol"); } -#endif diff --git a/tutorials/gl/viewer3DMaster.C b/tutorials/gl/viewer3DMaster.C index 882466bbef327..f9d112dc966a0 100644 --- a/tutorials/gl/viewer3DMaster.C +++ b/tutorials/gl/viewer3DMaster.C @@ -13,12 +13,6 @@ /// /// \author Richard Maunder -#if defined(__CINT__) && !defined(__MAKECINT__) -{ - gSystem->CompileMacro("viewer3DMaster.C"); - viewer3DMaster(); -} -#else #include "TVirtualViewer3D.h" #include "TBuffer3D.h" @@ -338,4 +332,3 @@ void viewer3DMaster() myGeom->Draw("ogl"); } -#endif diff --git a/tutorials/gui/QtFileDialog.C b/tutorials/gui/QtFileDialog.C index 5968117908a14..e70f715fc98d4 100644 --- a/tutorials/gui/QtFileDialog.C +++ b/tutorials/gui/QtFileDialog.C @@ -26,20 +26,13 @@ /// /// \author Valeri Fine 23/03/2006 -#ifndef __CINT__ # include # include # include "TString.h" # include -#endif + TString QtFileDialog() { -#ifdef __CINT__ - // Load the qt cint dictionary. - // One is recommended to do that at once somewhere. - // For example from one's custom rootlogon.C script - gSystem->Load("$ROOTSYS/cint/cint/include/qtcint"); -#endif QString fileName = QFileDialog::getOpenFileName (); std::string flnm = fileName.toStdString(); return TString(flnm.c_str()); diff --git a/tutorials/gui/QtMultiFileDialog.C b/tutorials/gui/QtMultiFileDialog.C index 3b947940f80c6..5a261d35a02ed 100644 --- a/tutorials/gui/QtMultiFileDialog.C +++ b/tutorials/gui/QtMultiFileDialog.C @@ -33,7 +33,6 @@ /// /// \author Valeri Fine 23/03/2006 -#ifndef __CINT__ # include # include # include @@ -42,15 +41,9 @@ # include "TObjString.h" # include "TList.h" # include -#endif + TList *QtMultiFileDialog(const char *style="") { -#ifdef __CINT__ - // Load the qt cint dictionary. - // One is recommended to do that at once somewhere. - // For example from one's custom rootlogon.C script - gSystem->Load("$ROOTSYS/cint/cint/include/qtcint"); -#endif QStyle *saveStyle = 0; if (!QString(style).isEmpty()) { saveStyle = QApplication::style(); diff --git a/tutorials/gui/QtPrintDialog.C b/tutorials/gui/QtPrintDialog.C index eacde3a14c748..b5ea940e3f8e8 100644 --- a/tutorials/gui/QtPrintDialog.C +++ b/tutorials/gui/QtPrintDialog.C @@ -24,22 +24,16 @@ /// /// \author Valeri Fine 23/03/2006 -#ifndef __CINT__ + # include # include # include # include # include # include -#endif + void QtPrintDialog(TVirtualPad *pad = 0) { -#ifdef __CINT__ - // Load the qt cint dictionary. - // One is recommended to do that at once somewhere. - // For example from one's custom rootlogon.C script - gSystem->Load("$ROOTSYS/cint/cint/include/qtcint"); -#endif TVirtualPad *pd = pad; if (!pd) pd = TPad::Pad(); // ->GetCanvas(); if (pd) { diff --git a/tutorials/math/Legendre.C b/tutorials/math/Legendre.C index 16a3fde3447cf..7a5a81a600ff2 100644 --- a/tutorials/math/Legendre.C +++ b/tutorials/math/Legendre.C @@ -10,12 +10,6 @@ /// /// \author Lorenzo Moneta -#if defined(__CINT__) && !defined(__MAKECINT__) -{ - gSystem->CompileMacro("Legendre.C", "k"); - Legendre(); -} -#else #include "TMath.h" #include "TF1.h" @@ -61,4 +55,4 @@ void Legendre() Canvas->cd(); } -#endif + diff --git a/tutorials/math/LegendreAssoc.C b/tutorials/math/LegendreAssoc.C index beaaba1bf64b0..b58f88c94d3b1 100644 --- a/tutorials/math/LegendreAssoc.C +++ b/tutorials/math/LegendreAssoc.C @@ -19,12 +19,6 @@ /// /// \author Magdalena Slawinska -#if defined(__CINT__) && !defined(__MAKECINT__) -{ - gSystem->CompileMacro("LegendreAssoc.C", "k"); - LegendreAssoc(); -} -#else #include "TMath.h" #include "TF1.h" @@ -117,5 +111,3 @@ void LegendreAssoc() } } -#endif - diff --git a/tutorials/math/TSVDUnfoldExample.C b/tutorials/math/TSVDUnfoldExample.C index 52fcf5f89a23b..77656085beb00 100644 --- a/tutorials/math/TSVDUnfoldExample.C +++ b/tutorials/math/TSVDUnfoldExample.C @@ -29,9 +29,8 @@ #include "TColor.h" #include "TLine.h" -#if not defined(__CINT__) || defined(__MAKECINT__) #include "TSVDUnfold.h" -#endif + Double_t Reconstruct( Double_t xt, TRandom3& R ) { diff --git a/tutorials/math/exampleTKDE.C b/tutorials/math/exampleTKDE.C index 6be0996a40898..f110c2668c857 100644 --- a/tutorials/math/exampleTKDE.C +++ b/tutorials/math/exampleTKDE.C @@ -14,9 +14,7 @@ #include "TCanvas.h" //#include "TStopwatch.h" #include "TRandom.h" -#ifndef __CINT__ #include "Math/DistFunc.h" -#endif #include "TLegend.h" // test TKDE diff --git a/tutorials/math/mathcoreGenVector.C b/tutorials/math/mathcoreGenVector.C index 610d5c67dfb96..0783322fc635e 100644 --- a/tutorials/math/mathcoreGenVector.C +++ b/tutorials/math/mathcoreGenVector.C @@ -879,10 +879,6 @@ int testRotation() { void mathcoreGenVector() { - #ifdef __CINT__ - gSystem->Load("libMathCore"); - using namespace ROOT::Math ; - #endif testVector3D(); testPoint3D(); diff --git a/tutorials/math/mathcoreVectorCollection.C b/tutorials/math/mathcoreVectorCollection.C index b7fea30584695..4b8c3329b75f5 100644 --- a/tutorials/math/mathcoreVectorCollection.C +++ b/tutorials/math/mathcoreVectorCollection.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_math -/// \notebook +/// \notebook -js /// Example showing how to write and read a std vector of ROOT::Math LorentzVector in a ROOT tree. /// In the write() function a variable number of track Vectors is generated /// according to a Poisson distribution with random momentum uniformly distributed @@ -152,17 +152,6 @@ double read() { int mathcoreVectorCollection() { - #if defined(__CINT__) && !defined(__MAKECINT__) - - gSystem->Load("libMathCore"); - gSystem->Load("libPhysics"); - // in CINT need to do that after having loading the library - using namespace ROOT::Math ; - - cout << "This tutorial can run only using ACliC, compiling it by doing: " << endl; - cout << "\t .x tutorials/math/mathcoreVectorCollection.C+" << endl; - return 0; -#else int nEvents = 10000; double s1 = write(nEvents); double s2 = read(); @@ -172,12 +161,9 @@ int mathcoreVectorCollection() { return -1; } return 0; -#endif } -#ifndef __CINT__ int main() { return mathcoreVectorCollection(); } -#endif diff --git a/tutorials/math/mathcoreVectorIO.C b/tutorials/math/mathcoreVectorIO.C index fe31d756e2e8a..4b55134f964b7 100644 --- a/tutorials/math/mathcoreVectorIO.C +++ b/tutorials/math/mathcoreVectorIO.C @@ -160,16 +160,7 @@ void read() { } void mathcoreVectorIO() { -#if defined(__CINT__) && !defined(__MAKECINT__) - gSystem->Load("libMathCore"); - gSystem->Load("libPhysics"); - // in CINT need to do that after having loading the library - using namespace ROOT::Math; - - cout << "This tutorial can run only using ACliC, compiling it by doing: " << endl; - cout << "\t .x tutorials/math/mathcoreVectorCollection.C+" << endl; - return; -#endif + int nEvents = 100000; write(nEvents); read(); diff --git a/tutorials/math/mathmoreIntegration.C b/tutorials/math/mathmoreIntegration.C index 2981612a3637e..80cfdf49d9ee1 100644 --- a/tutorials/math/mathmoreIntegration.C +++ b/tutorials/math/mathmoreIntegration.C @@ -195,12 +195,6 @@ void DrawCumulative(double x1, double x2, int n = 100){ void mathmoreIntegration(double a = -2, double b = 2) { -#if defined(__CINT__) && !defined(__MAKECINT__) - cout << "WARNING: This tutorial can run only using ACliC, you must run it by doing: " << endl; - cout << "\t .x $ROOTSYS/tutorials/math/mathmoreIntegration.C+" << endl; - return; -#endif - DrawCumulative(a, b); testIntegPerf(a, b); } diff --git a/tutorials/math/multidimSampling.C b/tutorials/math/multidimSampling.C index 1b540a3e9f647..10ca24d9ccc0a 100644 --- a/tutorials/math/multidimSampling.C +++ b/tutorials/math/multidimSampling.C @@ -95,12 +95,6 @@ using namespace ROOT::Math; void multidimSampling() { -#ifdef __CINT__ - std::cout << "DO NOT RUN WITH CINT:" << std::endl; - std::cout << "we are using a custom function which requires" << std::endl; - std::cout << "that this tutorial must be compiled with ACLIC" << std::endl; - return; -#endif const int N = 10000; //const int NBin = 1000; diff --git a/tutorials/math/normalDist.C b/tutorials/math/normalDist.C index 89b0928ef5429..b20afeaae544a 100644 --- a/tutorials/math/normalDist.C +++ b/tutorials/math/normalDist.C @@ -8,14 +8,12 @@ /// /// \author Anna Kreshuk -#ifndef __CINT__ #include "Math/DistFunc.h" #include "TF1.h" #include "TCanvas.h" #include "TSystem.h" #include "TLegend.h" #include "TAxis.h" -#endif void normalDist() { diff --git a/tutorials/matrix/solveLinear.C b/tutorials/matrix/solveLinear.C index 6344affd43a53..304f4ba43e389 100644 --- a/tutorials/matrix/solveLinear.C +++ b/tutorials/matrix/solveLinear.C @@ -69,7 +69,6 @@ /// /// \author Eddy Offermann -#ifndef __CINT__ #include "Riostream.h" #include "TMatrixD.h" #include "TVectorD.h" @@ -77,14 +76,10 @@ #include "TDecompChol.h" #include "TDecompSVD.h" #include "TF1.h" -#endif void solveLinear(Double_t eps = 1.e-12) { -#ifdef __CINT__ - gSystem->Load("libMatrix"); -#endif cout << "Perform the fit y = c0 + c1 * x in four different ways" << endl; const Int_t nrVar = 2; diff --git a/tutorials/net/spyserv.C b/tutorials/net/spyserv.C index 4beb0dfb0a280..4586b2106e39b 100644 --- a/tutorials/net/spyserv.C +++ b/tutorials/net/spyserv.C @@ -20,9 +20,7 @@ #include "TMessage.h" #include "TRandom.h" #include "TList.h" -#ifndef __CINT__ #include "TError.h" -#endif class SpyServ { diff --git a/tutorials/proof/getProof.C b/tutorials/proof/getProof.C index 6393bb1c2e140..17cdbdea49828 100644 --- a/tutorials/proof/getProof.C +++ b/tutorials/proof/getProof.C @@ -79,13 +79,6 @@ TProof *getProof(const char *url = "proof://localhost:40000", Int_t nwrks = -1, const char *opt = "ask", Bool_t dyn = kFALSE, Bool_t tutords = kFALSE) { -#ifdef __CINT__ - Printf("getProof: this script can only be executed via ACliC:"); - Printf("getProof: root [] .x /getProof.C+"); - Printf("getProof: or root [] .L /getProof.C+"); - Printf("getProof: root [] getProof(...)"); - return; -#endif TProof *p = 0; diff --git a/tutorials/proof/runProof.C b/tutorials/proof/runProof.C index 1c918a8b4b6e0..76ee76e7f9e0c 100644 --- a/tutorials/proof/runProof.C +++ b/tutorials/proof/runProof.C @@ -357,13 +357,7 @@ void runProof(const char *what = "simple", const char *masterurl = "proof://localhost:40000", Int_t nwrks = -1, TList *ins = 0) { -#ifdef __CINT__ - Printf("runProof: this script can only be executed via ACliC:"); - Printf("runProof: root [] .x /runProof.C+"); - Printf("runProof: or root [] .L /runProof.C+"); - Printf("runProof: root [] runProof(...)"); - return; -#endif + gEnv->SetValue("Proof.StatsHist",1); TString u(masterurl); diff --git a/tutorials/pythia/pythiaExample.C b/tutorials/pythia/pythiaExample.C index 30c0344ffa706..3de56475a6f96 100644 --- a/tutorials/pythia/pythiaExample.C +++ b/tutorials/pythia/pythiaExample.C @@ -72,7 +72,6 @@ /// /// \author Christian Holm Christensen -#ifndef __CINT__ #include "TApplication.h" #include "TPythia6.h" #include "TFile.h" @@ -87,7 +86,7 @@ #include "Riostream.h" #include using namespace std; -#endif + #define FILENAME "pythia.root" #define TREENAME "tree" diff --git a/tutorials/quadp/portfolio.C b/tutorials/quadp/portfolio.C index b31af3871e020..990a59683d884 100644 --- a/tutorials/quadp/portfolio.C +++ b/tutorials/quadp/portfolio.C @@ -180,21 +180,13 @@ TArrayF &StockReturn(TFile *f,const TString &name,Int_t sDay,Int_t eDay) b_date->GetEntry(i); b_closeAdj->GetEntry(i); if (data->fDate >= sDay && data->fDate <= eDay) -#ifdef __CINT__ - closeAdj.AddAt(data->fCloseAdj/100. , i ); -#else closeAdj[i] = data->fCloseAdj/100.; -#endif } TArrayF *r = new TArrayF(nrEntries-1); for (Int_t i = 1; i < nrEntries; i++) // (*r)[i-1] = closeAdj[i]-closeAdj[i-1]; -#ifdef __CINT__ - r->AddAt(closeAdj[i]/closeAdj[i-1],1); -#else (*r)[i-1] = closeAdj[i]/closeAdj[i-1]; -#endif return *r; } @@ -289,7 +281,7 @@ TVectorD OptimalInvest(Double_t riskFactor,TVectorD r,TMatrixDSym Covar) } #endif -//--------------------------------------------------------------------------- + //--------------------------------------------------------------------------- void portfolio() { const Int_t sDay = 20000809; diff --git a/tutorials/roofit/rf502_wspacewrite.C b/tutorials/roofit/rf502_wspacewrite.C index 81490386bb656..4d8f1f3cc53d4 100644 --- a/tutorials/roofit/rf502_wspacewrite.C +++ b/tutorials/roofit/rf502_wspacewrite.C @@ -10,9 +10,6 @@ /// \author 07/2008 - Wouter Verkerke -#ifndef __CINT__ -#include "RooGlobalFunc.h" -#endif #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussian.h" diff --git a/tutorials/roostats/HybridInstructional.C b/tutorials/roostats/HybridInstructional.C index a166a9f8d2aa0..dc200d6dcbb25 100644 --- a/tutorials/roostats/HybridInstructional.C +++ b/tutorials/roostats/HybridInstructional.C @@ -132,12 +132,6 @@ void HybridInstructional() { // It takes ~4 min without PROOF and ~2 min with PROOF on 4 cores. // Of course, everything looks nicer with more toys, which takes longer. - #ifdef __CINT__ - cout << "DO NOT RUN WITH CINT: we are using a custom test statistic "; - cout << "which requires that this tutorial must be compiled "; - cout << "with ACLIC" << endl; - return; - #endif TStopwatch t; diff --git a/tutorials/roostats/ModelInspector.C b/tutorials/roostats/ModelInspector.C index ee30a695fc7e0..c09e754d80cb3 100644 --- a/tutorials/roostats/ModelInspector.C +++ b/tutorials/roostats/ModelInspector.C @@ -496,10 +496,6 @@ void ModelInspector(const char* infile = "", const char* modelConfigName = "ModelConfig", const char* dataName = "obsData"){ -#ifdef __CINT__ - cout <<"You must use ACLIC for this. Use ModelInspector.C+"< #include #include -#endif + void sqlselect() { diff --git a/tutorials/thread/threads.C b/tutorials/thread/threads.C index e3ff65ad4d89f..eda6c7c520e74 100644 --- a/tutorials/thread/threads.C +++ b/tutorials/thread/threads.C @@ -35,10 +35,6 @@ void *handle(void *ptr) void threads() { -#ifdef __CINT__ - printf("This script can only be executed via ACliC: .x threads.C++\n"); - return; -#endif gDebug = 1; diff --git a/tutorials/thread/threadsh1.C b/tutorials/thread/threadsh1.C index bdf73b8b6baea..1de3d54045db2 100644 --- a/tutorials/thread/threadsh1.C +++ b/tutorials/thread/threadsh1.C @@ -73,10 +73,6 @@ void closed(Int_t id) void threadsh1() { -#ifdef __CINT__ - printf("This script can only be executed via ACliC: .x threadsh1.C++\n"); - return; -#endif finished = kFALSE; //gDebug = 1; diff --git a/tutorials/thread/threadsh2.C b/tutorials/thread/threadsh2.C index b76cb4bd8df08..d6149e8a42877 100644 --- a/tutorials/thread/threadsh2.C +++ b/tutorials/thread/threadsh2.C @@ -147,11 +147,6 @@ void tryclosing(Int_t id) void threadsh2() { -#ifdef __CINT__ - printf("This script can only be executed via ACliC: .x threadsh2.C++\n"); - return; -#endif - if (gROOT->IsBatch()) { return; } diff --git a/tutorials/tree/drawsparse.C b/tutorials/tree/drawsparse.C index 06abf15ad6bb0..c3fc9c5113560 100644 --- a/tutorials/tree/drawsparse.C +++ b/tutorials/tree/drawsparse.C @@ -102,10 +102,6 @@ void drawsparse() { // create a THnSparse and draw it. -#ifdef __CINT__ - printf("For performance reasons we advise to run \".x drawsparse.C+\"\n"); -#endif - const Int_t ndims = 8; Int_t bins[ndims] = {10, 10, 5, 30, 10, 4, 18, 12}; Double_t xmin[ndims] = {-5., -10., -1000., -3., 0., 0., 0., 0.}; diff --git a/tutorials/unuran/unuranDemo.C b/tutorials/unuran/unuranDemo.C index f2d9c847979e3..08a555be909a4 100644 --- a/tutorials/unuran/unuranDemo.C +++ b/tutorials/unuran/unuranDemo.C @@ -42,10 +42,8 @@ #include "TApplication.h" #include "TCanvas.h" -#ifndef __CINT__ // need to exclude to avoid CINT re-defining them #include "Math/ProbFunc.h" #include "Math/DistFunc.h" -#endif #include #include From a3c412a85a2692ca61893cd3839dbc066ed32286 Mon Sep 17 00:00:00 2001 From: Pau Miquel Date: Tue, 16 Aug 2016 18:47:05 +0200 Subject: [PATCH 2/5] Simplified \notebook line replacement --- documentation/doxygen/filter.cxx | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/documentation/doxygen/filter.cxx b/documentation/doxygen/filter.cxx index fe45badbddd12..97a43d5edf423 100644 --- a/documentation/doxygen/filter.cxx +++ b/documentation/doxygen/filter.cxx @@ -303,16 +303,8 @@ void FilterTutorial() if (gLineString.find("\\notebook") != string::npos) { ExecuteCommand(StringFormat("python converttonotebook.py %s %s/notebooks/", gFileName.c_str(), gOutDir.c_str())); - ReplaceAll(gLineString, "\\notebook -header -nodraw", StringFormat( "\\htmlonly \"View \"Open \\endhtmlonly", gMacroName.c_str() , gMacroName.c_str()) ); - - ReplaceAll(gLineString, "\\notebook -header", StringFormat( "\\htmlonly \"View \"Open \\endhtmlonly", gMacroName.c_str() , gMacroName.c_str()) ); - - ReplaceAll(gLineString, "\\notebook -js", StringFormat( "\\htmlonly \"View \"Open \\endhtmlonly", gMacroName.c_str() , gMacroName.c_str()) ); - - ReplaceAll(gLineString, "\\notebook -nodraw", StringFormat( "\\htmlonly \"View \"Open \\endhtmlonly", gMacroName.c_str() , gMacroName.c_str()) ); - - ReplaceAll(gLineString, "\\notebook", StringFormat( "\\htmlonly \"View \"Open \\endhtmlonly", gMacroName.c_str() , gMacroName.c_str()) ); + gLineString = StringFormat( "/// \\htmlonly \"View \"Open \\endhtmlonly \n", gMacroName.c_str() , gMacroName.c_str()); } // \macro_output found From a27fd4bb4b3c18144b46e5790c963558bd2dbf94 Mon Sep 17 00:00:00 2001 From: Pau Miquel Date: Tue, 16 Aug 2016 18:47:41 +0200 Subject: [PATCH 3/5] Numerous bug fixes --- documentation/doxygen/converttonotebook.py | 63 ++++++++++++---------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/documentation/doxygen/converttonotebook.py b/documentation/doxygen/converttonotebook.py index f0adc778df95e..f7383c96fabd5 100644 --- a/documentation/doxygen/converttonotebook.py +++ b/documentation/doxygen/converttonotebook.py @@ -261,7 +261,7 @@ def readHeaderCpp(text): newtext = '' for line in lines[i:]: newtext += (line + "\n") - + description = description.replace("\\f$", "$") return newtext, description, author, isNotebook, isJsroot, nodraw, needsHeaderFile @@ -488,25 +488,22 @@ def processmain(text): ... }''') ('TCanvas function(){\\n content of function\\n spanning several\\n lines\\n return c1\\n}', '\\n# \\n# Call the main function \\n# \\nfunction();', True , '') """ - callMainFunction = '' argumentsCell = '' - keepFunction = False - argumentesre = re.compile(r'(?<=\().*?(?=\))', flags = re.DOTALL | re.MULTILINE) - arguments = argumentesre.search(text) + argumentsre = re.compile(r'(?<=\().*?(?=\))', flags = re.DOTALL | re.MULTILINE) + arguments = argumentsre.search(text) if len(arguments.group()) > 3: + print arguments.group() argumentsCell = "# \n Arguments are defined. \n# \n" - argumentList = arguments.group().split(",") + #argumentList = arguments.group().split(",") + individualArgumentre = re.compile(r'[^/\n,]*?=[^/\n,]*') #, flags = re.DOTALL) #| re.MULTILINE) + argumentList=individualArgumentre.findall(arguments.group()) + for argument in argumentList: print "ARGUMENT:", argument , "\n\n\n" for argument in argumentList: - argumentsCell += argument.strip() + ";\n" + argumentsCell += argument.strip("\n ") + ";\n" argumentsCell += "# \n" - if text.startswith("TCanvas"): - keepfunction = True - functionname = findFunctionName(text) - callMainFunction = "\n# \n# Call the main function \n# \n%s();" % functionname - - return text, callMainFunction, keepFunction, argumentsCell + return text, argumentsCell # now define text transformers def removePaletteEditor(code): @@ -558,9 +555,23 @@ def foamRemoveIfndef(code): code = code.replace("#endif", "") return code + +def declareIncludes(code): + print code + code = re.sub(r"# \s*#include", "# \n%%cpp -d\n#include" , code) + print code + return code + +def tree4GetFiles(code): + if tutName == "tree4": + code = code.replace( + """#include \"../test/Event.h\"""" , """std::string tutDir = gROOT->GetTutorialsDir();\nTString headerDir = TString::Format("#include \\\"%s/roostats/NuMuToNuE_Oscillation.h\\\"", tutDir.c_str());\nTString impDir = TString::Format("#include \\\"%s/roostats/NuMuToNuE_Oscillation.cxx\\\"", tutDir.c_str());\ngROOT->ProcessLine(headerDir);\ngROOT->ProcessLine(impDir);""") + return code + def fixes(code): codeTransformers=[removePaletteEditor, runEventExe, getLibMathMore, - roofitRemoveSpacesComments, declareNamespace, rs401dGetFiles ,foamRemoveIfndef] + roofitRemoveSpacesComments, declareNamespace, rs401dGetFiles , + foamRemoveIfndef, declareIncludes] for transformer in codeTransformers: code = transformer(code) @@ -594,9 +605,8 @@ def mainfunction(text): # Modify text from macros to suit a notebook if isCpp(): main, helpers, rest = split(text) - main, callMainFunction, keepfunction, argumentsCell = processmain(main) - if not keepfunction: - main = cppComments(unindenter(cppFunction(main))) # Remove function, Unindent, and convert comments to Markdown cells + main, argumentsCell = processmain(main) + main = cppComments(unindenter(cppFunction(main))) # Remove function, Unindent, and convert comments to Markdown cells if argumentsCell: main = argumentsCell + main @@ -609,18 +619,12 @@ def mainfunction(text): text = "# \n# The header file must be copied to the current directory\n# \n.!cp %s%s.h .\n# \n" % (tutRelativePath, tutName) text += rest else: - text = rest + text = "# \n" + rest for helper in helpers: text += helper - if keepfunction: - text += "\n# \n# The main function is defined\n# \n%%cpp -d\n" - else: - text += "\n# \n" - text += main - if callMainFunction: - text += callMainFunction + text += ("\n# \n" + main) if extension == "py": text = pythonComments(text) # Convert comments into Markdown cells @@ -630,9 +634,9 @@ def mainfunction(text): text = fixes(text) # Add the title and header of the notebook - text = "# \n# # %s\n%s# \n# \n# **Author:** %s \n# This notebook tutorial " \ - "was automatically generated from the macro found in the ROOT repository " \ - "on %s.\n# \n%s" % (tutTitle, description, author, date, text) + text = "# \n# # %s\n%s# \n# \n# **Author:** %s \n# This notebook tutorial was automatically generated " \ + "with [ROOTBOOK-izer (Beta)](https://github.com/root-mirror/root/blob/master/documentation/doxygen/converttonotebook.py) " \ + "from the macro found in the ROOT repository on %s.\n# \n%s" % (tutTitle, description, author, date, text) # Add cell at the end of the notebook that draws all the canveses. Add a Markdown cell before explaining it. if isJsroot and not nodraw: @@ -702,7 +706,8 @@ def mainfunction(text): sys.stderr.write("NOTEBOOK_CONVERSION_WARNING: Nbconvert failed for notebook %s with return code %s\n" %(outname,r)) if isJsroot: subprocess.call(["jupyter", "trust", os.path.join(outdir + outnameconverted)]) - os.remove(outPathName) + if r == 0: # Only remove notebook without output if nbconvert succeedes + os.remove(outPathName) if __name__ == "__main__": From 70af01e1a0359f595a9e99041ffb320be7950e40 Mon Sep 17 00:00:00 2001 From: Pau Miquel Date: Tue, 16 Aug 2016 18:49:32 +0200 Subject: [PATCH 4/5] Style fixes, and fixes to improve conversion to notebooks --- tutorials/fit/ConfidenceIntervals.C | 2 +- tutorials/fit/line3Dfit.C | 25 +- tutorials/fit/minuit2GausFit.C | 98 ++--- tutorials/fit/multidimfit.C | 436 +++++++++++----------- tutorials/fit/myfit.C | 2 +- tutorials/hsimple.C | 12 +- tutorials/io/mergeSelective.C | 2 +- tutorials/math/mathcoreVectorFloatIO.C | 4 +- tutorials/math/principal.C | 8 +- tutorials/math/testUnfold5c.C | 2 +- tutorials/roofit/rf509_wsinteractive.C | 13 +- tutorials/roofit/rf608_fitresultaspdf.C | 3 +- tutorials/roofit/rf903_numintcache.C | 16 +- tutorials/roostats/StandardHypoTestDemo.C | 4 +- tutorials/roostats/Zbi_Zgamma.C | 24 +- tutorials/tree/cernbuild.C | 8 +- tutorials/tree/tree4.C | 2 +- 17 files changed, 331 insertions(+), 330 deletions(-) diff --git a/tutorials/fit/ConfidenceIntervals.C b/tutorials/fit/ConfidenceIntervals.C index 9193dfa9cac99..1cddc7cf24ccf 100644 --- a/tutorials/fit/ConfidenceIntervals.C +++ b/tutorials/fit/ConfidenceIntervals.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_fit -/// \notebook -js +/// \notebook /// Illustrates TVirtualFitter::GetConfidenceIntervals /// This method computes confidence intervals for the fitted function /// diff --git a/tutorials/fit/line3Dfit.C b/tutorials/fit/line3Dfit.C index 80a2ec5532c5c..289f5e66da948 100644 --- a/tutorials/fit/line3Dfit.C +++ b/tutorials/fit/line3Dfit.C @@ -40,19 +40,8 @@ void line(double t, const double *p, double &x, double &y, double &z) { z = t; } -// calculate distance line-point -double distance2(double x,double y,double z, const double *p) { - // distance line point is D= | (xp-x0) cross ux | - // where ux is direction of line and x0 is a point in the line (like t = 0) - XYZVector xp(x,y,z); - XYZVector x0(p[0], p[2], 0. ); - XYZVector x1(p[0] + p[1], p[2] + p[3], 1. ); - XYZVector u = (x1-x0).Unit(); - double d2 = ((xp-x0).Cross(u)) .Mag2(); - return d2; -} -bool first = true; +bool first = true; // function Object to be minimized struct SumDistance2 { @@ -61,6 +50,18 @@ struct SumDistance2 { SumDistance2(TGraph2D * g) : fGraph(g) {} + // calculate distance line-point + double distance2(double x,double y,double z, const double *p) { + // distance line point is D= | (xp-x0) cross ux | + // where ux is direction of line and x0 is a point in the line (like t = 0) + XYZVector xp(x,y,z); + XYZVector x0(p[0], p[2], 0. ); + XYZVector x1(p[0] + p[1], p[2] + p[3], 1. ); + XYZVector u = (x1-x0).Unit(); + double d2 = ((xp-x0).Cross(u)) .Mag2(); + return d2; + } + // implementation of the function to be minimized double operator() (const double * par) { diff --git a/tutorials/fit/minuit2GausFit.C b/tutorials/fit/minuit2GausFit.C index 2f31de53e51ba..e760c6843c210 100644 --- a/tutorials/fit/minuit2GausFit.C +++ b/tutorials/fit/minuit2GausFit.C @@ -23,60 +23,60 @@ void testGausFit( std::string type = "Minuit2", int n = 1000) { - gRandom = new TRandom3(); - - TVirtualFitter::SetDefaultFitter(type.c_str() ); - - std::string name; - name = "h1_" + type; - TH1D * h1 = new TH1D(name.c_str(),"Chi2 Fit",100, -5, 5. ); - name = "h2_" + type; - TH1D * h2 = new TH1D(name.c_str(),"Chi2 Fit with Minos Error",100, -5, 5. ); - name = "h3_" + type; - TH1D * h3 = new TH1D(name.c_str(),"Chi2 Fit with Integral and Minos",100, -5, 5. ); - name = "h4_" + type; - TH1D * h4 = new TH1D(name.c_str(),"Likelihood Fit with Minos Error",100, -5, 5. ); - - gStyle->SetOptStat(1111111); - gStyle->SetOptFit(1111111); - - for (int i = 0; i < n; ++i) { - double x = gRandom->Gaus(0,1); - h1->Fill( x ); - h2->Fill( x ); - h3->Fill( x ); - h4->Fill( x ); - } - - std::string cname = type + "Canvas" ; - std::string ctitle = type + " Gaussian Fit" ; - TCanvas *c1 = new TCanvas(cname.c_str(),cname.c_str(),10,10,900,900); - c1->Divide(2,2); - - c1->cd(1); - cout << "\nDo Fit 1\n"; - h1->Fit("gaus","Q"); - h1->Draw(); - c1->cd(2); - cout << "\nDo Fit 2\n"; - h2->Fit("gaus","VE"); - h2->Draw(); - c1->cd(3); - cout << "\nDo Fit 3\n"; - h3->Fit("gaus","IE"); - h3->Draw(); - c1->cd(4); - cout << "\nDo Fit 4\n"; - h4->Fit("gaus","VLE"); - h4->Draw(); + gRandom = new TRandom3(); + + TVirtualFitter::SetDefaultFitter(type.c_str() ); + + std::string name; + name = "h1_" + type; + TH1D * h1 = new TH1D(name.c_str(),"Chi2 Fit",100, -5, 5. ); + name = "h2_" + type; + TH1D * h2 = new TH1D(name.c_str(),"Chi2 Fit with Minos Error",100, -5, 5. ); + name = "h3_" + type; + TH1D * h3 = new TH1D(name.c_str(),"Chi2 Fit with Integral and Minos",100, -5, 5. ); + name = "h4_" + type; + TH1D * h4 = new TH1D(name.c_str(),"Likelihood Fit with Minos Error",100, -5, 5. ); + + gStyle->SetOptStat(1111111); + gStyle->SetOptFit(1111111); + + for (int i = 0; i < n; ++i) { + double x = gRandom->Gaus(0,1); + h1->Fill( x ); + h2->Fill( x ); + h3->Fill( x ); + h4->Fill( x ); + } + + std::string cname = type + "Canvas" ; + std::string ctitle = type + " Gaussian Fit" ; + TCanvas *c1 = new TCanvas(cname.c_str(),cname.c_str(),10,10,900,900); + c1->Divide(2,2); + + c1->cd(1); + cout << "\nDo Fit 1\n"; + h1->Fit("gaus","Q"); + h1->Draw(); + c1->cd(2); + cout << "\nDo Fit 2\n"; + h2->Fit("gaus","VE"); + h2->Draw(); + c1->cd(3); + cout << "\nDo Fit 3\n"; + h3->Fit("gaus","IE"); + h3->Draw(); + c1->cd(4); + cout << "\nDo Fit 4\n"; + h4->Fit("gaus","VLE"); + h4->Draw(); } void minuit2GausFit() { - int n = 1000; - testGausFit("Minuit2",n); - testGausFit("Fumili2",n); + int n = 1000; + testGausFit("Minuit2",n); + testGausFit("Fumili2",n); } diff --git a/tutorials/fit/multidimfit.C b/tutorials/fit/multidimfit.C index 9938e7aa9a33c..0e0e03da8de17 100644 --- a/tutorials/fit/multidimfit.C +++ b/tutorials/fit/multidimfit.C @@ -39,240 +39,240 @@ void makeData(Double_t* x, Double_t& d, Double_t& e) //____________________________________________________________________ int CompareResults(TMultiDimFit *fit, bool doFit) { - //Compare results with reference run - - - // the right coefficients (before fit) - double GoodCoeffsNoFit[] = { - -4.37056, - 43.1468, - 13.432, - 13.4632, - 13.3964, - 13.328, - 13.3016, - 13.3519, - 4.49724, - 4.63876, - 4.89036, - -3.69982, - -3.98618, - -3.86195, - 4.36054, - -4.02597, - 4.57037, - 4.69845, - 2.83819, - -3.48855, - -3.97612 - }; - - // the right coefficients (after fit) - double GoodCoeffs[] = { - -4.399, - 43.15, - 13.41, - 13.49, - 13.4, - 13.23, - 13.34, - 13.29, - 4.523, - 4.659, - 4.948, - -4.026, - -4.045, - -3.939, - 4.421, - -4.006, - 4.626, - 4.378, - 3.516, - -4.111, - -3.823, - }; - -// Good Powers - int GoodPower[] = { - 1, 1, 1, 1, - 2, 1, 1, 1, - 1, 1, 1, 2, - 1, 1, 2, 1, - 1, 2, 1, 1, - 2, 2, 1, 1, - 2, 1, 1, 2, - 2, 1, 2, 1, - 1, 1, 1, 3, - 1, 3, 1, 1, - 1, 1, 5, 1, - 1, 1, 2, 2, - 1, 2, 1, 2, - 1, 2, 2, 1, - 2, 1, 1, 3, - 2, 2, 1, 2, - 2, 1, 3, 1, - 2, 3, 1, 1, - 1, 2, 2, 2, - 2, 1, 2, 2, - 2, 2, 2, 1 - }; - - Int_t nc = fit->GetNCoefficients(); - Int_t nv = fit->GetNVariables(); - const Int_t *powers = fit->GetPowers(); - const Int_t *pindex = fit->GetPowerIndex(); - if (nc != 21) return 1; - const TVectorD *coeffs = fit->GetCoefficients(); - int k = 0; - for (Int_t i=0;i 5e-5) return 2; - } - for (Int_t j=0;jProcessLine(".L MDF.C"); - - Double_t refMDF = (doFit) ? 43.95 : 43.98; - // this does not work in CLing since the function is not defined - //Double_t x[] = {5,5,5,5}; - //Double_t rMDF = MDF(x); - //LM: need to return the address of the result since it is casted to a long (this should not be in a tutorial !) - Long_t iret = gROOT->ProcessLine(" Double_t x[] = {5,5,5,5}; double result=MDF(x); &result;"); - Double_t rMDF = * ( (Double_t*)iret); - //printf("%f\n",rMDF); - if (TMath::Abs(rMDF -refMDF) > 1e-2) return 4; - return 0; + //Compare results with reference run + + + // the right coefficients (before fit) + double GoodCoeffsNoFit[] = { + -4.37056, + 43.1468, + 13.432, + 13.4632, + 13.3964, + 13.328, + 13.3016, + 13.3519, + 4.49724, + 4.63876, + 4.89036, + -3.69982, + -3.98618, + -3.86195, + 4.36054, + -4.02597, + 4.57037, + 4.69845, + 2.83819, + -3.48855, + -3.97612 + }; + + // the right coefficients (after fit) + double GoodCoeffs[] = { + -4.399, + 43.15, + 13.41, + 13.49, + 13.4, + 13.23, + 13.34, + 13.29, + 4.523, + 4.659, + 4.948, + -4.026, + -4.045, + -3.939, + 4.421, + -4.006, + 4.626, + 4.378, + 3.516, + -4.111, + -3.823, + }; + + // Good Powers + int GoodPower[] = { + 1, 1, 1, 1, + 2, 1, 1, 1, + 1, 1, 1, 2, + 1, 1, 2, 1, + 1, 2, 1, 1, + 2, 2, 1, 1, + 2, 1, 1, 2, + 2, 1, 2, 1, + 1, 1, 1, 3, + 1, 3, 1, 1, + 1, 1, 5, 1, + 1, 1, 2, 2, + 1, 2, 1, 2, + 1, 2, 2, 1, + 2, 1, 1, 3, + 2, 2, 1, 2, + 2, 1, 3, 1, + 2, 3, 1, 1, + 1, 2, 2, 2, + 2, 1, 2, 2, + 2, 2, 2, 1 + }; + + Int_t nc = fit->GetNCoefficients(); + Int_t nv = fit->GetNVariables(); + const Int_t *powers = fit->GetPowers(); + const Int_t *pindex = fit->GetPowerIndex(); + if (nc != 21) return 1; + const TVectorD *coeffs = fit->GetCoefficients(); + int k = 0; + for (Int_t i=0;i 5e-5) return 2; + } + for (Int_t j=0;jProcessLine(".L MDF.C"); + + Double_t refMDF = (doFit) ? 43.95 : 43.98; + // this does not work in CLing since the function is not defined + //Double_t x[] = {5,5,5,5}; + //Double_t rMDF = MDF(x); + //LM: need to return the address of the result since it is casted to a long (this should not be in a tutorial !) + Long_t iret = gROOT->ProcessLine(" Double_t xvalues[] = {5,5,5,5}; double result=MDF(xvalues); &result;"); + Double_t rMDF = * ( (Double_t*)iret); + //printf("%f\n",rMDF); + if (TMath::Abs(rMDF -refMDF) > 1e-2) return 4; + return 0; } //____________________________________________________________________ Int_t multidimfit(bool doFit = true) { - cout << "*************************************************" << endl; - cout << "* Multidimensional Fit *" << endl; - cout << "* *" << endl; - cout << "* By Christian Holm 14/10/00 *" << endl; - cout << "*************************************************" << endl; - cout << endl; + cout << "*************************************************" << endl; + cout << "* Multidimensional Fit *" << endl; + cout << "* *" << endl; + cout << "* By Christian Holm 14/10/00 *" << endl; + cout << "*************************************************" << endl; + cout << endl; - // Initialize global TRannom object. - gRandom = new TRandom(); + // Initialize global TRannom object. + gRandom = new TRandom(); - // Open output file - TFile* output = new TFile("mdf.root", "RECREATE"); + // Open output file + TFile* output = new TFile("mdf.root", "RECREATE"); - // Global data parameters - Int_t nVars = 4; - Int_t nData = 500; - Double_t x[4]; + // Global data parameters + Int_t nVars = 4; + Int_t nData = 500; + Double_t x[4]; - // make fit object and set parameters on it. - TMultiDimFit* fit = new TMultiDimFit(nVars, TMultiDimFit::kMonomials,"v"); + // make fit object and set parameters on it. + TMultiDimFit* fit = new TMultiDimFit(nVars, TMultiDimFit::kMonomials,"v"); - Int_t mPowers[] = { 6 , 6, 6, 6 }; - fit->SetMaxPowers(mPowers); - fit->SetMaxFunctions(1000); - fit->SetMaxStudy(1000); - fit->SetMaxTerms(30); - fit->SetPowerLimit(1); - fit->SetMinAngle(10); - fit->SetMaxAngle(10); - fit->SetMinRelativeError(.01); + Int_t mPowers[] = { 6 , 6, 6, 6 }; + fit->SetMaxPowers(mPowers); + fit->SetMaxFunctions(1000); + fit->SetMaxStudy(1000); + fit->SetMaxTerms(30); + fit->SetPowerLimit(1); + fit->SetMinAngle(10); + fit->SetMaxAngle(10); + fit->SetMinRelativeError(.01); - // variables to hold the temporary input data - Double_t d; - Double_t e; + // variables to hold the temporary input data + Double_t d; + Double_t e; - // Print out the start parameters - fit->Print("p"); + // Print out the start parameters + fit->Print("p"); - printf("======================================\n"); + printf("======================================\n"); - // Create training sample - Int_t i; - for (i = 0; i < nData ; i++) { + // Create training sample + Int_t i; + for (i = 0; i < nData ; i++) { - // Make some data - makeData(x,d,e); + // Make some data + makeData(x,d,e); - // Add the row to the fit object - fit->AddRow(x,d,e); - } - - // Print out the statistics - fit->Print("s"); - - // Book histograms - fit->MakeHistograms(); - - // Find the parameterization - fit->FindParameterization(); - - // Print coefficents - fit->Print("rc"); - - // Get the min and max of variables from the training sample, used - // for cuts in test sample. - Double_t *xMax = new Double_t[nVars]; - Double_t *xMin = new Double_t[nVars]; - for (i = 0; i < nVars; i++) { - xMax[i] = (*fit->GetMaxVariables())(i); - xMin[i] = (*fit->GetMinVariables())(i); - } - - nData = fit->GetNCoefficients() * 100; - Int_t j; - - // Create test sample - for (i = 0; i < nData ; i++) { - // Make some data - makeData(x,d,e); - - for (j = 0; j < nVars; j++) - if (x[j] < xMin[j] || x[j] > xMax[j]) - break; - - // If we get through the loop above, all variables are in range - if (j == nVars) // Add the row to the fit object - fit->AddTestRow(x,d,e); - else - i--; - } - //delete gRandom; - - // Test the parameterizatio and coefficents using the test sample. - if (doFit) - fit->Fit("M"); - - // Print result - fit->Print("fc v"); - - // Write code to file - fit->MakeCode(); - - // Write histograms to disk, and close file - output->Write(); - output->Close(); - delete output; - - // Compare results with reference run - Int_t compare = CompareResults(fit, doFit); - if (!compare) { - printf("\nmultidimfit .............................................. OK\n"); - } else { - printf("\nmultidimfit .............................................. fails case %d\n",compare); - } - - // We're done - delete fit; - return compare; + fit->AddRow(x,d,e); + } + + // Print out the statistics + fit->Print("s"); + + // Book histograms + fit->MakeHistograms(); + + // Find the parameterization + fit->FindParameterization(); + + // Print coefficents + fit->Print("rc"); + + // Get the min and max of variables from the training sample, used + // for cuts in test sample. + Double_t *xMax = new Double_t[nVars]; + Double_t *xMin = new Double_t[nVars]; + for (i = 0; i < nVars; i++) { + xMax[i] = (*fit->GetMaxVariables())(i); + xMin[i] = (*fit->GetMinVariables())(i); + } + + nData = fit->GetNCoefficients() * 100; + Int_t j; + + // Create test sample + for (i = 0; i < nData ; i++) { + // Make some data + makeData(x,d,e); + + for (j = 0; j < nVars; j++) + if (x[j] < xMin[j] || x[j] > xMax[j]) + break; + + // If we get through the loop above, all variables are in range + if (j == nVars) + // Add the row to the fit object + fit->AddTestRow(x,d,e); + else + i--; + } + //delete gRandom; + + // Test the parameterizatio and coefficents using the test sample. + if (doFit) + fit->Fit("M"); + + // Print result + fit->Print("fc v"); + + // Write code to file + fit->MakeCode(); + + // Write histograms to disk, and close file + output->Write(); + output->Close(); + delete output; + + // Compare results with reference run + Int_t compare = CompareResults(fit, doFit); + if (!compare) { + printf("\nmultidimfit .............................................. OK\n"); + } else { + printf("\nmultidimfit .............................................. fails case %d\n",compare); + } + + // We're done + delete fit; + return compare; } diff --git a/tutorials/fit/myfit.C b/tutorials/fit/myfit.C index 2b876c1b53e16..c707edc127724 100644 --- a/tutorials/fit/myfit.C +++ b/tutorials/fit/myfit.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_fit -/// \notebook +/// \notebook -js /// Get in memory an histogram from a root file and fit a user defined function. /// Note that a user defined function must always be defined /// as in this example: diff --git a/tutorials/hsimple.C b/tutorials/hsimple.C index ebcd1edd6c26d..0e299574c78ac 100644 --- a/tutorials/hsimple.C +++ b/tutorials/hsimple.C @@ -31,14 +31,14 @@ #include #include -TFile *hsimple(Int_t get=0) +TFile *hsimple(Int_t getFile=0) { TString filename = "hsimple.root"; TString dir = gROOT->GetTutorialsDir(); dir.ReplaceAll("/./","/"); TFile *hfile = 0; - if (get) { - // if the argument get =1 return the file "hsimple.root" + if (getFile) { + // if the argument getFile =1 return the file "hsimple.root" // if the file does not exist, it is created TString fullPath = dir+"hsimple.root"; if (!gSystem->AccessPathName(fullPath,kFileExists)) { @@ -78,13 +78,13 @@ TFile *hsimple(Int_t get=0) // Fill histograms randomly - TRandom3 random; + TRandom3 randomNum; Float_t px, py, pz; const Int_t kUPDATE = 1000; for (Int_t i = 0; i < 25000; i++) { - random.Rannor(px,py); + randomNum.Rannor(px,py); pz = px*px + py*py; - Float_t rnd = random.Rndm(1); + Float_t rnd = randomNum.Rndm(1); hpx->Fill(px); hpxpy->Fill(px,py); hprof->Fill(px,pz); diff --git a/tutorials/io/mergeSelective.C b/tutorials/io/mergeSelective.C index f71e9ce8eec8f..9daff2808e37b 100644 --- a/tutorials/io/mergeSelective.C +++ b/tutorials/io/mergeSelective.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_io -/// \notebook +/// \notebook -nodraw /// Merge only part of the content of a set of files. /// This macro demonstrates how to merge only a part of the content of a set /// of input files, specified via the interface. diff --git a/tutorials/math/mathcoreVectorFloatIO.C b/tutorials/math/mathcoreVectorFloatIO.C index f05cd72181d2b..6a4d5f21019ae 100644 --- a/tutorials/math/mathcoreVectorFloatIO.C +++ b/tutorials/math/mathcoreVectorFloatIO.C @@ -100,7 +100,7 @@ void runIt() { #if defined(__CINT__) && !defined(__MAKECINT__) gSystem->Load("libMathCore"); gSystem->Load("libPhysics"); - using namespace ROOT::Math; + using namespace ROOT::Math ; cout << "This tutorial can run only using ACliC, you must run it by doing: " << endl; cout << "\t .L tutorials/math/mathcoreVectorFloatIO.C+" << endl; @@ -115,7 +115,7 @@ void mathcoreVectorFloatIO() { #if defined(__CINT__) && !defined(__MAKECINT__) gSystem->Load("libMathCore"); gSystem->Load("libPhysics"); - using namespace ROOT::Math; + using namespace ROOT::Math ; cout << "This tutorial can run only using ACliC, you must run it by doing: " << endl; cout << "\t .L tutorials/math/mathcoreVectorFloatIO.C+" << endl; diff --git a/tutorials/math/principal.C b/tutorials/math/principal.C index 73d7273edb492..41e879a93ee86 100644 --- a/tutorials/math/principal.C +++ b/tutorials/math/principal.C @@ -39,7 +39,7 @@ void principal(Int_t n=10, Int_t m=10000) TPrincipal* principal = new TPrincipal(n,"ND"); // Use a pseudo-random number generator - TRandom* random = new TRandom; + TRandom* random1 = new TRandom; // Make the m data-points // Make a variable to hold our data @@ -50,9 +50,9 @@ void principal(Int_t n=10, Int_t m=10000) // First we create the un-correlated, random variables, according // to one of three distributions for (Int_t j = 0; j < n - c; j++) { - if (j % 3 == 0) data[j] = random->Gaus(5,1); - else if (j % 3 == 1) data[j] = random->Poisson(8); - else data[j] = random->Exp(2); + if (j % 3 == 0) data[j] = random1->Gaus(5,1); + else if (j % 3 == 1) data[j] = random1->Poisson(8); + else data[j] = random1->Exp(2); } // Then we create the correlated variables diff --git a/tutorials/math/testUnfold5c.C b/tutorials/math/testUnfold5c.C index 5933a2d3ecdee..f15f57d6aa920 100644 --- a/tutorials/math/testUnfold5c.C +++ b/tutorials/math/testUnfold5c.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_unfold5 -/// \notebook +/// \notebook -nodraw /// Version 17.0 example for multi-dimensional unfolding /// /// \macro_output diff --git a/tutorials/roofit/rf509_wsinteractive.C b/tutorials/roofit/rf509_wsinteractive.C index 9b15fde7121e9..c6bd85613c964 100644 --- a/tutorials/roofit/rf509_wsinteractive.C +++ b/tutorials/roofit/rf509_wsinteractive.C @@ -1,5 +1,6 @@ /// \file /// \ingroup tutorial_roofit +/// \notebook -js /// 'ORGANIZATION AND SIMULTANEOUS FITS' RooFit tutorial macro #509 /// /// Easy CINT interactive access to workspace contents through a @@ -43,13 +44,13 @@ void rf509_wsinteractive() // but this does not work anymore in CLING. // so this tutorial is an example on how to // change the code - RooWorkspace* w = new RooWorkspace("w",kTRUE) ; + RooWorkspace* w1 = new RooWorkspace("w",kTRUE) ; // Fill workspace with p.d.f. and data in a separate function - fillWorkspace(*w) ; + fillWorkspace(*w1) ; // Print workspace contents - w->Print() ; + w1->Print() ; // this does not work anymore with CLING // use normal workspace functionality @@ -65,8 +66,8 @@ void rf509_wsinteractive() //RooFitResult* r = w::model.fitTo(*d) ; // use normal workspace methods - RooAbsPdf * model = w->pdf("model"); - RooRealVar * x = w->var("x"); + RooAbsPdf * model = w1->pdf("model"); + RooRealVar * x = w1->var("x"); RooDataSet* d = model->generate(*x,1000) ; RooFitResult* r = model->fitTo(*d) ; @@ -86,7 +87,7 @@ void rf509_wsinteractive() // model.plotOn(frame,Components(bkg),LineStyle(kDashed)) ; // new correct syntax - RooAbsPdf *bkg = w->pdf("bkg"); + RooAbsPdf *bkg = w1->pdf("bkg"); model->plotOn(frame); model->plotOn(frame,Components(*bkg),LineStyle(kDashed)) ; diff --git a/tutorials/roofit/rf608_fitresultaspdf.C b/tutorials/roofit/rf608_fitresultaspdf.C index 1bd5209b96c8e..7006bb71346c2 100644 --- a/tutorials/roofit/rf608_fitresultaspdf.C +++ b/tutorials/roofit/rf608_fitresultaspdf.C @@ -95,10 +95,9 @@ void rf608_fitresultaspdf() // Draw the 'sigar' - gStyle->SetCanvasPreferGL(true); gStyle->SetPalette(1) ; new TCanvas("rf608_fitresultaspdf_1","rf608_fitresultaspdf_1",600,600) ; - hh_3d->Draw("gliso") ; + hh_3d->Draw("iso") ; // Draw the 2D projections of the 3D p.d.f. TCanvas* c2 = new TCanvas("rf608_fitresultaspdf_2","rf608_fitresultaspdf_2",900,600) ; diff --git a/tutorials/roofit/rf903_numintcache.C b/tutorials/roofit/rf903_numintcache.C index 1f7d895b80d5f..311bb5e955e71 100644 --- a/tutorials/roofit/rf903_numintcache.C +++ b/tutorials/roofit/rf903_numintcache.C @@ -38,14 +38,14 @@ void rf903_numintcache(Int_t mode=0) // ----------------------------------------------------------------------------------- // Make/load workspace, exit here in mode 1 - RooWorkspace* w = getWorkspace(mode) ; + RooWorkspace* w1 = getWorkspace(mode) ; if (mode==1) { // Show workspace that was created - w->Print() ; + w1->Print() ; // Show plot of cached integral values - RooDataHist* hhcache = (RooDataHist*) w->expensiveObjectCache().getObj(1) ; + RooDataHist* hhcache = (RooDataHist*) w1->expensiveObjectCache().getObj(1) ; if (hhcache) { new TCanvas("rf903_numintcache","rf903_numintcache",600,600) ; @@ -62,22 +62,22 @@ void rf903_numintcache(Int_t mode=0) // ----------------------------------------------------------------------------------- // This is always slow (need to find maximum function value empirically in 3D space) - RooDataSet* d = w->pdf("model")->generate(RooArgSet(*w->var("x"),*w->var("y"),*w->var("z")),1000) ; + RooDataSet* d = w1->pdf("model")->generate(RooArgSet(*w1->var("x"),*w1->var("y"),*w1->var("z")),1000) ; // This is slow in mode 0, but fast in mode 1 - w->pdf("model")->fitTo(*d,Verbose(kTRUE),Timer(kTRUE)) ; + w1->pdf("model")->fitTo(*d,Verbose(kTRUE),Timer(kTRUE)) ; // Projection on x (always slow as 2D integral over Y,Z at fitted value of a is not cached) - RooPlot* framex = w->var("x")->frame(Title("Projection of 3D model on X")) ; + RooPlot* framex = w1->var("x")->frame(Title("Projection of 3D model on X")) ; d->plotOn(framex) ; - w->pdf("model")->plotOn(framex) ; + w1->pdf("model")->plotOn(framex) ; // Draw x projection on canvas new TCanvas("rf903_numintcache","rf903_numintcache",600,600) ; framex->Draw() ; // Make workspace available on command line after macro finishes - gDirectory->Add(w) ; + gDirectory->Add(w1) ; return ; diff --git a/tutorials/roostats/StandardHypoTestDemo.C b/tutorials/roostats/StandardHypoTestDemo.C index 16a5c52a8d099..b540baf28c6e6 100644 --- a/tutorials/roostats/StandardHypoTestDemo.C +++ b/tutorials/roostats/StandardHypoTestDemo.C @@ -79,8 +79,8 @@ void StandardHypoTestDemo(const char* infile = "", const char* modelSBName = "ModelConfig", const char* modelBName = "", const char* dataName = "obsData", - int calcType = 0, // 0 freq 1 hybrid, 2 asymptotic - int testStatType = 3, // 0 LEP, 1 TeV, 2 LHC, 3 LHC - one sided + int calcType = 0, /* 0 freq 1 hybrid, 2 asymptotic */ + int testStatType = 3, /* 0 LEP, 1 TeV, 2 LHC, 3 LHC - one sided*/ int ntoys = 5000, bool useNC = false, const char * nuisPriorName = 0) diff --git a/tutorials/roostats/Zbi_Zgamma.C b/tutorials/roostats/Zbi_Zgamma.C index 439fb2f911dd2..660b41a0f2b23 100644 --- a/tutorials/roostats/Zbi_Zgamma.C +++ b/tutorials/roostats/Zbi_Zgamma.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_roostats -/// \notebook +/// \notebook -js /// Demonstrate Z_Bi = Z_Gamma /// /// \macro_image @@ -24,19 +24,19 @@ void Zbi_Zgamma() { // Make model for prototype on/off problem // Pois(x | s+b) * Pois(y | tau b ) // for Z_Gamma, use uniform prior on b. - RooWorkspace* w = new RooWorkspace("w",true); - w->factory("Poisson::px(x[150,0,500],sum::splusb(s[0,0,100],b[100,0,300]))"); - w->factory("Poisson::py(y[100,0,500],prod::taub(tau[1.],b))"); - w->factory("Uniform::prior_b(b)"); + RooWorkspace* w1 = new RooWorkspace("w",true); + w1->factory("Poisson::px(x[150,0,500],sum::splusb(s[0,0,100],b[100,0,300]))"); + w1->factory("Poisson::py(y[100,0,500],prod::taub(tau[1.],b))"); + w1->factory("Uniform::prior_b(b)"); // construct the Bayesian-averaged model (eg. a projection pdf) // p'(x|s) = \int db p(x|s+b) * [ p(y|b) * prior(b) ] - w->factory("PROJ::averagedModel(PROD::foo(px|b,py,prior_b),b)") ; + w1->factory("PROJ::averagedModel(PROD::foo(px|b,py,prior_b),b)") ; // plot it, blue is averaged model, red is b known exactly - RooPlot* frame = w->var("x")->frame() ; - w->pdf("averagedModel")->plotOn(frame) ; - w->pdf("px")->plotOn(frame,LineColor(kRed)) ; + RooPlot* frame = w1->var("x")->frame() ; + w1->pdf("averagedModel")->plotOn(frame) ; + w1->pdf("px")->plotOn(frame,LineColor(kRed)) ; frame->Draw() ; // compare analytic calculation of Z_Bi @@ -44,9 +44,9 @@ void Zbi_Zgamma() { // for an example with x = 150, y = 100 // numeric RooFit Z_Gamma - w->var("y")->setVal(100); - w->var("x")->setVal(150); - RooAbsReal* cdf = w->pdf("averagedModel")->createCdf(*w->var("x")); + w1->var("y")->setVal(100); + w1->var("x")->setVal(150); + RooAbsReal* cdf = w1->pdf("averagedModel")->createCdf(*w1->var("x")); cdf->getVal(); // get ugly print messages out of the way cout << "Hybrid p-value = " << cdf->getVal() << endl; diff --git a/tutorials/tree/cernbuild.C b/tutorials/tree/cernbuild.C index a59b316ec06d9..81c2cffe96644 100644 --- a/tutorials/tree/cernbuild.C +++ b/tutorials/tree/cernbuild.C @@ -6,7 +6,7 @@ /// \macro_code /// \author Rene Brun -TFile *cernbuild(Int_t get=0, Int_t print=1) { +TFile *cernbuild(Int_t getFile=0, Int_t print=1) { Int_t Category; UInt_t Flag; @@ -29,8 +29,8 @@ TFile *cernbuild(Int_t get=0, Int_t print=1) { FILE *fp = fopen(Form("%scernstaff.dat",dir.Data()),"r"); TFile *hfile = 0; - if (get) { - // if the argument get =1 return the file "cernstaff.root" + if (getFile) { + // if the argument getFile =1 return the file "cernstaff.root" // if the file does not exist, it is created if (!gSystem->AccessPathName(dir+"cernstaff.root",kFileExists)) { hfile = TFile::Open(dir+"cernstaff.root"); //in $ROOTSYS/tutorials/tree @@ -72,7 +72,7 @@ TFile *cernbuild(Int_t get=0, Int_t print=1) { fclose(fp); delete hfile; - if (get) { + if (getFile) { //we come here when the script is executed outside $ROOTSYS/tutorials/tree hfile = TFile::Open(filename); return hfile; diff --git a/tutorials/tree/tree4.C b/tutorials/tree/tree4.C index 2ab49c6733891..2a0d7fa204346 100644 --- a/tutorials/tree/tree4.C +++ b/tutorials/tree/tree4.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_tree -/// \notebook +/// \notebook -nodraw /// This example writes a tree with objects of the class Event. /// It is a simplified version of $ROOTSYS/test/MainEvent.cxx to /// write the tree, and $ROOTSYS/test/eventb.C From 8b0fbc828ead032c614aabd261817242b439dec1 Mon Sep 17 00:00:00 2001 From: Pau Miquel Date: Tue, 16 Aug 2016 18:57:18 +0200 Subject: [PATCH 5/5] removed gStyle->SetPalette(1) --- tutorials/eve/boxset.C | 2 -- tutorials/eve/boxset_cones.C | 1 - tutorials/eve/calorimeters.C | 1 - tutorials/eve/jetcone.C | 1 - tutorials/eve/quadset.C | 6 ------ tutorials/eve/triangleset.C | 1 - tutorials/fit/graph2dfit.C | 1 - tutorials/gl/glvox1.C | 1 - tutorials/gl/glvox2.C | 1 - tutorials/graphics/earth.C | 1 - tutorials/hist/ContourList.C | 1 - tutorials/hist/FirstContour.C | 1 - tutorials/hist/draw2dopt.C | 1 - tutorials/hist/th2polyHoneycomb.C | 1 - tutorials/hist/th2polyUSA.C | 1 - tutorials/math/GammaFun.C | 1 - tutorials/math/kdTreeBinning.C | 1 - tutorials/roofit/rf607_fitresult.C | 1 - tutorials/roofit/rf608_fitresultaspdf.C | 1 - tutorials/roofit/rf801_mcstudy.C | 1 - tutorials/tree/parallelcoord.C | 1 - tutorials/tree/tree0.C | 1 - 22 files changed, 28 deletions(-) diff --git a/tutorials/eve/boxset.C b/tutorials/eve/boxset.C index 4f790c16ac31e..bd1966ddc93d9 100644 --- a/tutorials/eve/boxset.C +++ b/tutorials/eve/boxset.C @@ -13,7 +13,6 @@ TEveBoxSet* boxset(Float_t x=0, Float_t y=0, Float_t z=0, TEveManager::Create(); TRandom r(0); - gStyle->SetPalette(1, 0); TEveRGBAPalette* pal = new TEveRGBAPalette(0, 130); @@ -114,7 +113,6 @@ TEveBoxSet* boxset_freebox(Int_t num=100, Bool_t registerSet=kTRUE) TEveManager::Create(); TRandom r(0); - gStyle->SetPalette(1, 0); TEveRGBAPalette* pal = new TEveRGBAPalette(0, 130); diff --git a/tutorials/eve/boxset_cones.C b/tutorials/eve/boxset_cones.C index 9dad6c5926e1f..314dedae3acd1 100644 --- a/tutorials/eve/boxset_cones.C +++ b/tutorials/eve/boxset_cones.C @@ -19,7 +19,6 @@ TEveBoxSet* boxset_cones(Float_t x=0, Float_t y=0, Float_t z=0, lines->SetLineWidth(2); TRandom r(0); - gStyle->SetPalette(1, 0); TEveRGBAPalette* pal = new TEveRGBAPalette(0, 500); TEveBoxSet* cones = new TEveBoxSet("ConeSet"); cones->SetPalette(pal); diff --git a/tutorials/eve/calorimeters.C b/tutorials/eve/calorimeters.C index b0fc511c32ebd..442f15a971899 100644 --- a/tutorials/eve/calorimeters.C +++ b/tutorials/eve/calorimeters.C @@ -98,7 +98,6 @@ TEveCaloLego* MakeCaloLego(TEveCaloData* data, TEveWindowSlot* slot) v->SetElementName("Viewer - Lego"); s->SetElementName("Scene - Lego"); - gStyle->SetPalette(1, 0); TEveCaloLego* lego = new TEveCaloLego(data); s->AddElement(lego); diff --git a/tutorials/eve/jetcone.C b/tutorials/eve/jetcone.C index ee7c3652c916d..04451c1c2e66c 100644 --- a/tutorials/eve/jetcone.C +++ b/tutorials/eve/jetcone.C @@ -29,7 +29,6 @@ void jetcone() Float_t length = 300.; // -- Define palette - gStyle->SetPalette(1, 0); TEveRGBAPalette* pal = new TEveRGBAPalette(0, 500); // ----------------------------------------------------------------------- diff --git a/tutorials/eve/quadset.C b/tutorials/eve/quadset.C index f592a946d849c..ed7401fd53283 100644 --- a/tutorials/eve/quadset.C +++ b/tutorials/eve/quadset.C @@ -13,7 +13,6 @@ TEveQuadSet* quadset(Float_t x=0, Float_t y=0, Float_t z=0, TEveManager::Create(); TRandom r(0); - gStyle->SetPalette(1, 0); TEveRGBAPalette *pal = new TEveRGBAPalette(0, 130); TEveFrameBox *box = new TEveFrameBox(); @@ -73,7 +72,6 @@ TEveQuadSet* quadset_emc(Float_t x=0, Float_t y=0, Float_t z=0, Int_t num=100) TEveManager::Create(); TRandom r(0); - gStyle->SetPalette(1, 0); TEveQuadSet* q = new TEveQuadSet("EMC Supermodule"); q->SetOwnIds(kTRUE); @@ -103,7 +101,6 @@ TEveQuadSet* quadset_circ() TEveManager::Create(); TRandom rnd(0); - gStyle->SetPalette(1, 0); Float_t R = 10, dW = 1, dH = .5; @@ -152,7 +149,6 @@ TEveQuadSet* quadset_hex(Float_t x=0, Float_t y=0, Float_t z=0, TEveManager::Create(); TRandom r(0); - gStyle->SetPalette(1, 0); { TEveQuadSet* q = new TEveQuadSet("HexagonXY"); @@ -209,7 +205,6 @@ TEveQuadSet* quadset_hexid(Float_t x=0, Float_t y=0, Float_t z=0, TEveManager::Create(); TRandom r(0); - gStyle->SetPalette(1, 0); TEveQuadSet* q = new TEveQuadSet("HexagonXY"); @@ -252,7 +247,6 @@ void quadset_hierarchy(Int_t n=4) { TEveManager::Create(); - gStyle->SetPalette(1, 0); TEveRGBAPalette* pal = new TEveRGBAPalette(20, 100); pal->SetLimits(0, 120); diff --git a/tutorials/eve/triangleset.C b/tutorials/eve/triangleset.C index 6054c347cb9c7..fa37dffd4e94c 100644 --- a/tutorials/eve/triangleset.C +++ b/tutorials/eve/triangleset.C @@ -49,7 +49,6 @@ void triangleset() ts3 = TEveTriangleSet::ReadTrivialFile("broken_torus.tring"); ts3->SetName("Spectrum"); ts3->GenerateTriangleNormals(); - gStyle->SetPalette(1, 0); ts3->GenerateZNormalColors(50, -50, 50, kTRUE, kTRUE); ts3->SetMainColor(0); TGeoHMatrix m; diff --git a/tutorials/fit/graph2dfit.C b/tutorials/fit/graph2dfit.C index bdec93e8b0ba3..3086a6e5bc99f 100644 --- a/tutorials/fit/graph2dfit.C +++ b/tutorials/fit/graph2dfit.C @@ -77,7 +77,6 @@ TCanvas* graph2dfit() h3->Fill(f2->Eval(x,y)-z); } - gStyle->SetPalette(1); c->cd(1); f2->SetTitle("Original function with Graph2D points on top"); f2->SetMaximum(zmax); diff --git a/tutorials/gl/glvox1.C b/tutorials/gl/glvox1.C index 810d9e9ac2f44..3e498b7560dac 100644 --- a/tutorials/gl/glvox1.C +++ b/tutorials/gl/glvox1.C @@ -38,7 +38,6 @@ void glvox1() } gStyle->SetCanvasPreferGL(1); - gStyle->SetPalette(1); hist->Draw("glcol"); } diff --git a/tutorials/gl/glvox2.C b/tutorials/gl/glvox2.C index 8fcc5cded7b87..b3cec9cd959a1 100644 --- a/tutorials/gl/glvox2.C +++ b/tutorials/gl/glvox2.C @@ -100,7 +100,6 @@ void glvox2() } gStyle->SetCanvasPreferGL(1); - gStyle->SetPalette(1); hist->Draw("glcol"); } diff --git a/tutorials/graphics/earth.C b/tutorials/graphics/earth.C index 66f2470b8de0f..85889ab49f2ff 100644 --- a/tutorials/graphics/earth.C +++ b/tutorials/graphics/earth.C @@ -15,7 +15,6 @@ TCanvas *earth(){ - gStyle->SetPalette(1); gStyle->SetOptTitle(1); gStyle->SetOptStat(0); diff --git a/tutorials/hist/ContourList.C b/tutorials/hist/ContourList.C index d177ed0c01aba..3e9806a02c596 100644 --- a/tutorials/hist/ContourList.C +++ b/tutorials/hist/ContourList.C @@ -63,7 +63,6 @@ TCanvas *ContourList(){ } } - gStyle->SetPalette(1); gStyle->SetOptStat(0); gStyle->SetTitleW(0.99); gStyle->SetTitleH(0.08); diff --git a/tutorials/hist/FirstContour.C b/tutorials/hist/FirstContour.C index 04b2da74eb982..f06f551040f35 100644 --- a/tutorials/hist/FirstContour.C +++ b/tutorials/hist/FirstContour.C @@ -22,7 +22,6 @@ void FirstContour() TTree *ntuple = (TTree*)file->Get("ntuple"); TCanvas *c1 = new TCanvas("c1","Contours",10,10,800,600); - gStyle->SetPalette(1); ntuple->Draw("py:px","px*px+py*py < 20", "contz,list"); //we must call Update to force the canvas to be painted. When diff --git a/tutorials/hist/draw2dopt.C b/tutorials/hist/draw2dopt.C index 8efc19428b0d8..7a0d573345570 100644 --- a/tutorials/hist/draw2dopt.C +++ b/tutorials/hist/draw2dopt.C @@ -10,7 +10,6 @@ void draw2dopt() { gStyle->SetOptStat(0); - gStyle->SetPalette(1); gStyle->SetCanvasColor(33); gStyle->SetFrameFillColor(18); TF2 *f2 = new TF2("f2","xygaus + xygaus(5) + xylandau(10)",-4,4,-4,4); diff --git a/tutorials/hist/th2polyHoneycomb.C b/tutorials/hist/th2polyHoneycomb.C index 45fc31eaa79e8..adbaacd4de7d3 100644 --- a/tutorials/hist/th2polyHoneycomb.C +++ b/tutorials/hist/th2polyHoneycomb.C @@ -11,7 +11,6 @@ void th2polyHoneycomb(){ gStyle->SetCanvasPreferGL(true); TH2Poly *hc = new TH2Poly(); hc->Honeycomb(0,0,.1,25,25); - gStyle->SetPalette(1); TRandom ran; for (int i = 0; i<30000; i++) { diff --git a/tutorials/hist/th2polyUSA.C b/tutorials/hist/th2polyUSA.C index 84aa00ac0baa4..51f02b0d71cca 100644 --- a/tutorials/hist/th2polyUSA.C +++ b/tutorials/hist/th2polyUSA.C @@ -72,6 +72,5 @@ void th2polyUSA() for (i=0; iFill(states[i], pop[i]); gStyle->SetOptStat(11); - gStyle->SetPalette(1); p->Draw("legogl"); } diff --git a/tutorials/math/GammaFun.C b/tutorials/math/GammaFun.C index c4448e98e4284..933b16144c108 100644 --- a/tutorials/math/GammaFun.C +++ b/tutorials/math/GammaFun.C @@ -30,7 +30,6 @@ void GammaFun() { gSystem->Load("libMathCore"); - gStyle->SetPalette(1); gStyle->SetOptStat(0); TF1 *f1a = new TF1("Gamma(x)","ROOT::Math::tgamma(x)",-2,5); diff --git a/tutorials/math/kdTreeBinning.C b/tutorials/math/kdTreeBinning.C index 0f5d658447974..786b6ad41f132 100644 --- a/tutorials/math/kdTreeBinning.C +++ b/tutorials/math/kdTreeBinning.C @@ -91,7 +91,6 @@ void kdTreeBinning() { z[i] = (Double_t) h2pol->GetBinContent(h2pol->FindBin(smp[i], smp[DATASZ + i])); TGraph2D *g = new TGraph2D(DATASZ, smp, &smp[DATASZ], &z[0]); - gStyle->SetPalette(1); g->SetMarkerStyle(20); c1->cd(3); diff --git a/tutorials/roofit/rf607_fitresult.C b/tutorials/roofit/rf607_fitresult.C index ff70dd4fcc83d..ab2a67abd5343 100644 --- a/tutorials/roofit/rf607_fitresult.C +++ b/tutorials/roofit/rf607_fitresult.C @@ -88,7 +88,6 @@ void rf607_fitresult() // Construct 2D color plot of correlation matrix gStyle->SetOptStat(0) ; - gStyle->SetPalette(1) ; TH2* hcorr = r->correlationHist() ; diff --git a/tutorials/roofit/rf608_fitresultaspdf.C b/tutorials/roofit/rf608_fitresultaspdf.C index 7006bb71346c2..b2a3c333919e7 100644 --- a/tutorials/roofit/rf608_fitresultaspdf.C +++ b/tutorials/roofit/rf608_fitresultaspdf.C @@ -95,7 +95,6 @@ void rf608_fitresultaspdf() // Draw the 'sigar' - gStyle->SetPalette(1) ; new TCanvas("rf608_fitresultaspdf_1","rf608_fitresultaspdf_1",600,600) ; hh_3d->Draw("iso") ; diff --git a/tutorials/roofit/rf801_mcstudy.C b/tutorials/roofit/rf801_mcstudy.C index a46e6b00a4626..e500ef347623e 100644 --- a/tutorials/roofit/rf801_mcstudy.C +++ b/tutorials/roofit/rf801_mcstudy.C @@ -115,7 +115,6 @@ void rf801_mcstudy() // Draw all plots on a canvas - gStyle->SetPalette(1) ; gStyle->SetOptStat(0) ; TCanvas* c = new TCanvas("rf801_mcstudy","rf801_mcstudy",900,900) ; c->Divide(3,3) ; diff --git a/tutorials/tree/parallelcoord.C b/tutorials/tree/parallelcoord.C index 99110e6d63756..1a42b28a23914 100644 --- a/tutorials/tree/parallelcoord.C +++ b/tutorials/tree/parallelcoord.C @@ -36,7 +36,6 @@ void parallelcoord() { r = new TRandom();; new TCanvas("c1", "c1",0,0,800,700); - gStyle->SetPalette(1); nt = new TNtuple("nt","Demo ntuple","x:y:z:u:v:w"); diff --git a/tutorials/tree/tree0.C b/tutorials/tree/tree0.C index 5babbb6465c3b..a09913de70ae6 100644 --- a/tutorials/tree/tree0.C +++ b/tutorials/tree/tree0.C @@ -89,7 +89,6 @@ void tree0() { tree->StartViewer(); //gROOT->SetStyle("Plain"); // uncomment to set a different style - gStyle->SetPalette(1); // use precomputed color palette 1 // now draw some tree variables TCanvas *c1 = new TCanvas();