From 3cc737c8112537c79ad0732109a7359e538fbd8a Mon Sep 17 00:00:00 2001
From: matta <matta@npt>
Date: Tue, 20 Oct 2009 09:58:04 +0000
Subject: [PATCH] * Now taking into account MUST2 CsI and SiLi cristal/pad
 Number 	- Algo need to be fixed because it work only if the array of
 telescope is under 10

---
 .../DetectorConfiguration/Riken_65mm.detector |   2 +-
 NPAnalysis/10He_Riken/Analysis                | Bin 70174 -> 70336 bytes
 .../10He_Riken/include/ObjectManager.hh       |   2 +-
 NPAnalysis/10He_Riken/src/Analysis.cc         |  16 +-
 .../DummyDetector/TDUMMYDetectorDataDict.cxx  |   2 +-
 NPLib/InitialConditions/TInitialConditions.h  |   1 -
 NPLib/MUST2/Must2Array.h                      |   5 +-
 NPLib/MUST2/TMust2Data.h                      |   4 +-
 NPLib/MUST2/TMust2Physics.cxx                 | 314 +++++++++++++++++-
 NPLib/MUST2/TMust2Physics.h                   |   3 +-
 NPSimulation/include/Must2Scorers.hh          |  24 ++
 NPSimulation/src/EventGeneratorTransfert.cc   |   6 +-
 .../src/EventGeneratorTransfertToResonance.cc |  12 +-
 NPSimulation/src/GeneralScorers.cc            |   1 -
 NPSimulation/src/MUST2Array.cc                | 186 ++++++-----
 NPSimulation/src/Must2Scorers.cc              | 100 ++++++
 16 files changed, 552 insertions(+), 126 deletions(-)

diff --git a/Inputs/DetectorConfiguration/Riken_65mm.detector b/Inputs/DetectorConfiguration/Riken_65mm.detector
index 31d9cbda5..4e86c36cc 100644
--- a/Inputs/DetectorConfiguration/Riken_65mm.detector
+++ b/Inputs/DetectorConfiguration/Riken_65mm.detector
@@ -115,7 +115,7 @@ CSI=	0
 VIS=	all		
 
 %%%%%%%%%%%%%%%%%%%%			
-AddThinSi			
+%AddThinSi			
 %%%%%%%%% Det 1 %%%%%%%%			
 ThinSi			
 A=	17.61	9.85	104.11
diff --git a/NPAnalysis/10He_Riken/Analysis b/NPAnalysis/10He_Riken/Analysis
index 59f527f9d00c3ebb0de4ab83fe2eb345fcc3f2f7..f0612a01b99c8a28060b8aa7d3b0266620d96a3a 100755
GIT binary patch
delta 26172
zcmbt-4Omsh*8dzh8xJ1}0ty1kQBlzp(M<7+(4dQDMW$UV^<sH@$-G5oy;jyn;TVLc
z$kC!iBQrzu8mSqT7Ws)viHL>?hDLTsGc+tL^Sr+`dk<&Odhh>v|L1vzHNQ1$)~s2x
zX7=p8&ly&&v6jDWEeQ8Z+Gn*5V~nM5dAZm9V=Ff@Mo9yQ1u<p;5xhjrR*97A%~&k>
zK4!TWs0;Egl(}C1d_?Dog^W!M*KCxwL3kVYwLBX7%|EKv&21|Bx$xs>(>@;l*1lW2
zUgyJ?Skf)CH~(k}vFJ{yd687&^Ab`45=UBw^a>J`ve%JTBGG4+L0GX#iM)yQ7SbA|
zcaTbu)*-D&+JN+Lr1y~MQ)&?TS7+}dyBX;Nq^(FFB7KA;KOdW!?Vz6{?J)69&|OHo
zk@g_%McRk7AE^@Q3#2cR=yM3E2I&aWQKYYsYLOU=X6zV99a25g38Zh3<mcq(?$!<#
zTT+J!cR%0tjZZhnYT-V5{U27FKO}mwj%)-JJm|LCLQEXhi?LzALrfgk86)<a)waOI
zr5zZvkJoHVfIG7Y7SNrsPf>0&%ZGMkthL2z3pH_8f5x(y)~5f<2&S{vj+)IX6a=z*
zD5!-(14ppzPK?E!x7t92fgd4cK7qloOW*;BjI9@}wqO%Kj{2v3Jq_H^m9cXHT3ZLw
zP+qswO7^i}=FdXA>F_HWh%pruLDMi8L~%<V8P%6Dzn@W#04AJ`mMgDVZINdA4phua
z)@);d$paJ|A2fSB@OBtuIsTdrju7=9i(;$+9i;g{@;B?SC=CtX3q~*+cpQ>HD?{=F
zaHZ)oDtE${d*EU@WP7?XmZTVv(HjQCBN$21;1lT31)FBeGW92d)?BpO(5xue?+-wr
z_;>_T;p=i(NIoJ9--gTWH+hESfqsZeDDX2CoJEhy6$9=JWNa$Ne4trg3|ycXe7_w9
z&_@LNb+$ADK?fH}i@v~^%}@;ThCu^S-Uk(E2zJ4MMNlYRT85yc#RtX0gE?N978nBQ
zA%A$p4i8e#ss8&Ivbwey(<9iY@Kq3^9CAY7E`<LIG$4cQ3Jh{#%%y>|!r@ZHjBMb}
z9*o_hxV!{-1{##JAORkH{dcSFpcz9=7_!+?UWY~LFyOaK9)$zo+cA4&j~H7D%L3qX
z>4C1XjID)1h)rSe?})~a;h`xeegh2!?Df=-gh3}dXf|32DTaPP4E+KFXqxNfl0Ts7
zex*lt6wEOVATNx7#p#$va#oP<2gn|v{<HAN@+Pb87RXWq9|DK}VzpuDg@J2(!h=ds
zkHW0D0$hUjg}`SR!zD04M(uP|uwz!ph3HNMX(+}F`fxQl?>>jIn1LQ;0aJrdp+_-F
zkgh^dRwzO204`Hz(R;w_5u_c_zA&H>K@o%=ra>WjBoL;rf`xL-UxWcy5F;`s4j{7%
z3Z+NhMUYlQp&X*K(6if5vrRSik?Xf3D5d;KFAO>G^=Mx-_!H*oY{f-Sz@V>Tko16s
zmQM6=4CHBAeukKMQZevx#6&DyzT4Z-Hv+S284Q%ubPQtTLFk)jw)YAQI0XZA8N~~`
zAkYv*vcZ)Y!!q;;dW3-wL-DrVo}kJ>P>sQm$sSiA=)Oiw$d&O3D$YmHPBQD?f)1U~
zJVSO9^u@JUbsIWnxEwCNtXvDG1Gn7n8S}C5-C1Q;d<}yifdO)e!Vo-3iidnLgmusd
z^@x#9>>}hRp@Rq&(cZ_f^cP><)8ofbumdiU9=HVts6lr(wWO?cPuQ`!P=;&@T(JQL
zA$COrZp1_q44^TmAgzGn9xwoGQT`leU5kz}`oU@lY{4uDGNatiy0J*CbPt+QOF?-K
zHLH}Uj>f{W#w@1>>QSGiXtqXQBSxNqi(kNy3^W_efCm~B`LlM+KR-mN?C~kg%WABA
z6=nqs#w<sP>J%ChEVXaK)zsiuXlQ{F6TP7DX*57RCWEiQAPuud#@N&jj73#=V(4fe
z%)g-sk`%K-1cIhq8N(pdJgYSD0p$LrOsjvxg~e!Kx>^4PEL3ZiARdmTy8<2{$B;oK
zi28FFVrh`Q{{vtsORol(UcnejfoCwL7hs@VY6IcI9x&hzQ{g6M$bv9rTM#2p!yqYt
z4~A^+=7pjD{p>^HZ<})0<e}r{&Yk(xkodp-b6#4;Q;$FNz~d=TvVYur`&~2n%t1Xj
zzc>0vZ*L3hz=zy8j-R-3k>w<xnG|g~!x!T3N&aS1bmyNjVPGW-dgvi6!`|#9Ka>=$
zyG`!A{!0<@Ud(R*MDQs~(ri8$U)rW=SludsJ7B6-5`{Oah$2pEh$0SaiDLZfi25L2
zh+^0pi9)lBD2DwkQ7kUaMEx<0EtElgv=W73mx)rSj|0V2v=W8gHlpxa08uP@K}2C-
zC{fJKaH8;X6j2PHo#;U<??e%wu|%;p4J3-;jwiYi%jhu5Abt{vVs4KidIVFDDAxOA
zq8Of3qFB5p5=9`V5p^&&nJDJ&RHD5Yn?}@$3m?(mjLjm736Vh*VKIj&#yOLyj;T72
zGO<|oh+;Sv5Z#Jpn<$1OhiD#SxkRtS1&=7^W&zPbSgwi2;U<OXV8)7w#v{Oq4#89>
zI+U>zqSs@sAvz2<A)tDP8yMR{jNuq_q9d?e6HUO3B03T`7(_=Q28dQ828fPE3=qYI
zrH1HO!~oGm!~oG75d%b%5CcTVAqI$!M+^|X2{ABE(`_A+u{IDR1u;PMX2bx|zaa(?
zd>v8|14Jhv28iB*7$ABpV^i|JyDR&w)dfj*-@=_W3mD7im)&l+qk5j^N<_H2zR>We
z1a+t0w{NHWhH^xgyU#BCr8@3DI>mJc<(nE%&)tXOJA(?FssyGu&!B13R4y>Zdj`UY
zHI)iXai3u)Tr4ofe?~0f0)c5BWMD8@Q<lIqA2Q%u)|5$D??V$KBZ(O4LVzYnMk?Vn
zfoY;-q!CUMnC45yRKoEB)4a(@Cu|p(=1&Ios3}Nb247}m5@rHh3C}0od<E^h``Cz)
zMT`b8+<gKF=Mt_GIEZio;c|gP2^SJB6*!!5G2vo?qX?G}E)dvGxRh{~z%hi&2xneF
z`|dum#3(05x)2yhxPow+!108u2qy_VjBqXCc!3iLHxRZ9Jch7~aFD=BgqsO7fs+Zh
z5^nwj?YsM=5`!UHni~EfJdrTnYBf~}oJKf^aJj&f35OFd6?iIPJK<u1rxA`NTp(~d
z;dsJX0?#6xKsZwuj0|EV5hGpTIfPRQrwN=%IE`?U!1D-CB^)pCe8TC3?E)_#oIyB9
z;4H$KgqgrOgy$31n`yfA$t6Y>F&YG3LO7RjmB0mr3ka7Byo_)m;ZlJM2^SMC7PyFT
z3E={PiwTz!&JuVH;WA*oDN`^?h*3@g=>l&cTtPTZ;8Ma>gp&l`Lb#T2yuf9I8wlG4
z-bUC(I7r}f!p(%4z`F>yT5$boYW|%(P(ch_|KI_ED+${OR|#B2IEZk$z%_)!36~07
zOW01hSl~Lsv4jf*ZXg^_I7{G0!U<lu{xoF@hKm?UB#<ufS;DD=(*$lNoJKfF;1<GD
z3C9cEN;sXcUEs@vGYAI>OlxUICSfKpt*IIFZy`qWZ{z`5Tr;u=Hwa9NY(_5ODqu_(
zHsr?{c_*_Qo6{yw%AgHu20ehd^X?4V+PMz!xCxP=8&HWoF)qJLDKcdZcq%ujj!&Nu
z9!}UDy1Wh?qj2Qcb5HNlHgM;Jh%SxbI?Cq-)2hIb@!e~UY2@1`MC!5FTI3zb9&Mc$
zw>LQk4|Fse%4k#KT8nNFk2Z#R))-e;OzuxeK~plW&Q3=cggWtG1kJz6nq6+qXU^q<
zJ2}Rdhnh|YO%IZJ8g)H2HVD)eWjYn!E*02F0kQMi6a<(GMxn}?9(jlJ_IT7h2wq-u
z-q)n#UKs0ih`K-%MFU}G-E)XYVPF917hI`dci2p!uR+g58VyJ_K4t?=Bd{%TI;6gz
zAnG(KicW@`Dt>MCsF1QdsSGwYRbq$ZbV$)CVQx4rkJ1COaVauN)_fQ>X&hd{*f<?g
zW@De2qf;cfF(&tIp;yQV(<J{3!Iwx!yqyWBzUoegWIhZgS$ZbO)5zaR&~%Dy_$E`X
zsRnyD#7Y7p!u8@MRNk3aOP$#PH{`9HhLAVMUsy8Gw6Nw^sO*w=G;eQSRE$gSN)=o4
zE;Kz4ZBB=ff_%P%>XWvMkT>~2{V<f$AgM6~JmKPG!=P|7=n5HO8uTUhWO*y;>hE-j
zcoGKD%ATh~XL37>7E?ts=vQo2oem)-45IpE&~|7u`9QD2vC<$R3tl#O!k{fsK_j<K
zjL|UD16DYYxckAq&gmFqvd_U2PKOW@_DOzM@;9`m@n>%9rXL|y%U#rE#4xEj0}jgF
zhdioYqCgbm>)|~^{W6DFTJm2cXAZCA-DS!(HDb%|F+SO_a-?e*%#_wU9TQFCdkEu&
zkT72IZ>Hge@man3g4@FN%fk9r#d@E>HtS`b&uBbM>m~19@TB#oDXv#Z&a__gvQ4?B
z(00~Ome$Wg?>yE|Gp)ZJT&F__3F{^QN%94(FYP6)_lK>{<+Y0S-8|OIIzRp5v0n0y
zgD0&wO>yldIn#Q{+ic1;CFB0d<NI0C`eo>y$ND*@_0NIpbO<3~z2vVYU%>i?p2GTG
z!ul-5`avG+Wu0inddc%wtT#<@{d&=3z2toho(TJSn1LSa=Sk~#L667!1*Y{I!F4)>
zkg#6zk5a3!KFF|sxUjxVv3{(_dRgZVvdWAc$s282Ma!CLimRVuz2t>R>(}63)?<B+
zw7v!99_yEw)}H{^=@3G~ddc@OtxvKG-`^;#FHx+&*<-z|qqlghm%N9;laXVZ;`%$u
znUN!TH<@xxHMlePSiekKAJfkIBGdX#!g?Vjte5=Z;FIq&qlNXU!ukru`Y9gkWu5na
z_E;}@E5MW1o2Iy)Cppu4$$Q+CYqGYpevPz#GJ5Cn{RY$eL~xxBAtbDq{0GSwu)es5
zuztF*zEH9LL67ya&Nml4)=S<2@TB#oDXtGm&a__g-ZJHyhT-Xm$M;*L^*QLB$NFui
z^^bt-bO<3~z2v__zJT>r-G%i}3hQ$f>$5!8%Q}II^^*7dd5`s`DX#Cqlh#Y#VN<SY
z7M}4q9S2PFqJ((|==KRaIdP#WAX6N>Oo0I5eTg=b7Fc~5m*70dEODuoWz|q6XQkwQ
zO1-43(Rfdjzk!!8>gF@85&Po&puK$el#szI(6CW}CfwDs2h!9nrmm*tcv=NHUN*%Z
zT++UdWPkjp?4jlD+1S-=p-sdaxQNJ2#PpwFac!Ps0fvIKt-HIIezjq3+nS%7AxxWy
zWq6Qgn2tWx8huKR!P7YMHK~%$y~<u#5Kk81g+iMJSAH}sm~U9%cHi#)6Qxutl^$r{
zEzh=Vvb66a9{3$QSHCg?BgW6)-9@k03cG5y`suk&$6<4%pNFuC%t$y4y-r7^S^nP`
z`+SGkUM&~A$uU-ng=ew*$!B>f%RHiEC;-g`T2_xW1Mti+G$P^+b!UM|bEXb0$@`IJ
z^q+Y0ek2`s$ykuK4m6cDbwtNh;p-vXHV|8IpPC<JKoL@TDa9mg4Z>Ro+1w&Dmp`Q#
z+bq$Wx6Zb2{aeI?>)bgwJ7rCN%9^~ClD#QKG_Fmz;i2l@lns<W^IU$)hGVW{4fRF4
zTWQ$Z5bfYRsMbLBTB`7V(e5(IFfm;^JmRzz6FLXAg-V{53DMfhEM7JB9{(7+jq}CT
z*mZ#qyQhDL7?dA(#PC`7^wNtl%qRBMuWZI<mHOT{$kX+o&$!+74l1diX7v6})Au((
zipKU3Nu-p^;-O~ooo4YS6q8bV2SMV!;HNV;=BE^AyDXzqik=v@clcFJE;MW0WomfL
z#B#7t(r94XjlQ?9PRk1o+aV+BsDZtBOzS~?@DMjYWf>K$!WAVir7&MiHZqBZg$f4Y
zGH=BFwPiy@Stgpfw(N#5JW{CFN=*07|5G8MK*~(ds&|lBJ??j2M-<hsY$ea8WD&!+
zi5T?E#3OXkMTmGbKsG8fgr|wxqv?r@N4f&ibxwmP6i<r@t#^o8(_#W>gs`<m4eIn9
zo^@ZOE*x_!E>`tL^%RweBT<Jsj9fsygO&rMW{o+?qtLX|(F&A5rIKzv@~145QzH`=
z;3+X~ilEH7TvUOCb2*7iq5GsztDNJb&~>>O2uT>&7d&xYh;=$-)4?Qny>VwwEl@|U
zK%0<b24BjaHu+7b@Cqb<dZpQQj5}^>>24l%^-VueUxX@AKu<lX;B~<lV(s|PV7-Q`
zXp%Y|QutZ4B(0achon_>3vDW$LUQJg!QgqvxW@6w>2`gVDN=HkJ-H^o86C&Qo{+Fd
z@(=mLp6OLihh%*9y~h^G+X<fBy~u{%BRSKSSyyzU*DFlHrtk1J$?2eHGuICBQJB~^
z#D+Chrj@q}E2&z0{y<@6t<xa|hbmSQPbZ)EP|OrM!1Ghgl)PU~8{KJ25>~eSsg;Mm
zGp(dz((Z-J@3C{o_I=&-O~b0dS9dxcvSjUPcUO1L@xYuXu_ENBRMzK+1saz>{^g7?
zOBO#p!>-fhs86XCvqLMT>!LZMaE+k1p{^}x(40gFHbsrBRMx%{y`^^P|EW^BSxKiU
zD4V+FFKbm9_EofRir%=py8Nd~RqZQfQKg1Pvr`C=_Px?-6>-lanr4ibxguVIH^kLR
zdV?m7$1lhBNe_BzFEyHTkswW2ImN9(8DiR%U0rY%*H<)i4Zp$Qml!P~hU;^VQ1c$s
zb`vaU+I7v4pGlAG&?-b5c*mI$?FZhabQ+@}9LvA`4+Ag9P#wY<|F4zW4SfH<to6SP
ze9Ni7vd^saX9NG4taSCjA9GzhY=<edj7!}AVbGs2n!0Atzwbz6t6w{~$3;Q?e;VAT
za@u2KI%~}|YDK$63knudqhM2En><BGzOD#VfYJ0YwBq3{u8P+#jR7akMTd%M(HRR<
zkDa3>=a*e6fy=Py$dZ!~r8OtYG_q~Yfvs(eRC!Lh9+<P9wx}>einLxOGVg}=Q&TQD
zSH~SKIA<FEDj3YA?dnQ8)!O=(wf-XRsM5m!RO#xtqe>I6uB4mY{<FACr|Iy2jyo@-
zDG?RwVl$5}R&8sF?pcL0i~=)E{&G<{llK1|bV|&Prl9lK@ZL9`%eGt{SAa*C_oi17
zDA_5M7IVL=@nipt*5^|cPid5UugT~{cB>_D8DeW*&;03)`Hrh3f{kt#qTZRrYf3{!
zeJ`Va^q<wQ#&!$-%SHX{lt$fhJf*RIWjI+OTB2!jfkYg{GeTWV4j2^ZxD6ABw&uoT
z@-gN#%EV9+mmZTl9myv5UU2bHn~>NON&X`6sg-TC@6&@8?#Q7D6bzQT+EcsxH=d1>
ztmzA$+$hPmFP`woN#05Dq@3JO|55K58Odv^ck9N`+#-gi2t!jeI;A+UNOX2JZbYeD
z_bT^WUqMa&lp;A?t#yXTf0_3}Whka9@?I#`^bBEnw;F2la;Ofy)yTQ3QVY7NDrq#a
z;q-}a!+lrKNsrSfn_L&Tc-BuyI9>9Cpu=@s6iU{1@`!HU;!EZ_Fs18cOUp@6KIJ#t
zSt#YYi1&=<J2rHt0u4!F`ND1scv5M=ABOqGhTM4Znou&AD1!2R<a`n|Unff5EK`oc
zsDuxDDE7MBu-B}gUYnmHZen}Fy87u2`6&S;5du_qTSMKmwR9Wz1b_aak$U6pSk0dN
z8ZNZPd`Edd_@<1$F$|yD7y_AmOC_Y?M+|elRvv=2zoEXn3tTGoW)^y@#%L$D0&SGh
zcRSVUR6^A^Qj}O@CgNJ+O28Mw@^;>tS6i>KFtJSyuh(owE(nzaT=*s#DcMO;hgRy%
z(0Uy$<kh}qhfe64L%M#%7kcQSSG^V##tUY5)q_lpVl@`pvTzSg+8Rx5znj_)923K2
zzS|oM1L+|c8G9a1K|AzSU}wsQ#CZv&l!Y2H$g4Azlv0TUHes+$Ex!gF_o#W74|%wc
zE_Pt?Xv?h7hbnXtH-d(SQ0f&uUA)6=>@G0M=sT)pwHyahL+uSm1J0DsD0|$@nnnc)
zqspk{5X?1iokENbFtZUVZQ*as>8_X2?0_4ypxE_PEol{XAECOYeS$HaJY(7?+ARX(
z8v95MDc9jUXUbm6#t8fNN~iS`_LWmfM4dZQ8ff%og4qa_j)i@F^m4Lm$5*6H)cFwF
zq+Nos77S^ZXzx2PuCa^MkkSe<0tYGkFJa<AY1dF;R|S<kKy4VeoS{Y^mYR)F>Ec>m
zJSR%8FdZjukNky!qB5h(rsD+TCki9eaiZb4KQoZjkoL~Pz^^E~)y$d$J60H2MI{@)
zRvagE9yc4I(u2I?BM3O!rA$6bjuUkzKtkFj7zv79qP_nH;~K}28d7?%2#s$j>o&8d
zUAGIn#9Q=>u(&PYgw7bnu5j4ZU9Xh^NA|5eLiUNeOR28uH^Ep4hV+|gw;YUX?8`Fk
zdrOSK_hetHu<v_0un!9R8mJ`km^(@um?Cuk%WQ;7XCCF99_gyj!b0IpX)w(!Co@mi
zkeNcoaVVE&3dVjggqim_Q$+K=e`Y4Bp*GH9KxpaE=ut0LOnkxGH5D4l=qDCpq7O1x
zTq>d(pP+{6Q$zoHvq36c#S=4=J6uBF_w6j;xtZA^_u%?n&w%hXNL&N*lWfyB2S4_z
z#d2ix`njDfmahDx$4B~Xz~bk6hqpfdr6rc{owwJLx%s6hax}|zn?s)o^YZ$6KOgjL
zU$5Wy@hQ*l9kgRNuJkD_<Ph_!G8c`w@+;7BT(n&GQw9M}1})|jo||lWjIVm`70bu`
z2ED)6rDmS459oA+o@J*r=KV%eBY2@csY~cC+Cc>5Rawd{Ri8I_Q%M$g>%+SGqeY_&
zW$V|k_nW>GoteIq-<mZm;IW-;OTmNuldOnQ@9q(olyEHgt~*fAIpqNMB*s^HQnr!K
z*Y;AC1C;$zWUI*0_Anl}aFpeFe#^q{x-V5ssU(q35Rn5c7=NGvF~A+onRFHm^TKXS
zt>dOd(;Qr}@OJMCDnL`q4(hVF@V-VyqEQ<?$b}z0LOPt_)Z6MTgdy1P&Y>8&5nV!z
zi0?H$gl-d0Zl{hxj_`CvCIvF&PxImbVxvv#T!@f4eXmmS3RE;D<LbFLS;tdvMbRH*
zxJOZ<spxf6(Fqi*w%ksN=u2nLlwIvRx6EiV;7wAF?jvmI8Z4e?lQ67031tr6xF{&<
zEmH`a;j4w-=Rw(V`bNdXzE|1s3f!pLw3x6p2484qE<ec1H)0#X#~ZPfM$ZUDq8I~i
zUb<I)4gq=#HX6nvVDnjaxh+2&<H)yX`|Gjg6eu;uTxdiG+=mIGBdefUMulKFsVPj0
zrZX_YjDvf~tUrx|8)1dhSd%8hYm|i?b*U2FHrL2o_}_AR59>-TsVk*swsZy&Dps{*
zMM5yH=c{tUBY%M6>}CtyzMTF8ZL~$*$#Q-uCwA7}PYsLDM0$!ggXc8nQ3k5ZcE!Z{
zI~a0ih->l9iiBX?ASJq*!yUt?JGyoBGuh;~+j+KQmgObxa_E*op0QY`JpLm8{2=|z
zXVm<!?S0WK0tX|3<;XduSqA)%c;1^oB`7b*nIa_KgM_qKFjj#f><uQBXuBSa>|OTz
zW=!8{?8F3juPFuzFV`o$YwkZSzw-sTy5$*uId}MoW^8(0ufZ+XY?7&j)GpX=1fy3s
zjTZUyRH1@DlsCt+ogd8`ZT;*Mytw?=3*F*&d<27P$!2rTevXne5h51FHE;-xh`Ako
zf=_#4K-}!BtK74#eU)QqTvqAMx4dwJbtc|5^Oxs!=YIJi7S4O*-xV22um2HS=6Zg@
zO}-Q>)h~QW{wm8xe%+F&gq@HgwnuORR5}0In!Sr%<+DQb`vlbeNnBrYcfjuN<Qk5Z
zyJ<;`?@W9LE&FVg>v7)IImy2U-|ozAb<Yd=q=rB4jP<F(ZxLJzHoxh7!)BSYdE6@>
zT6Fr+pe53KbQxCFCozXg-gmoWanms2klURO%0V0Pn&UQH5a~yR4}sP~_A$^FsskE?
zwdMuTfuOH|rh={podvoPGz;_;Xc1^LXc=f%T)=Cr_!e+4WSYT90u8_&MmlIL=pxW$
z(6ylHpqoG!fPM;E2zml^3+NTlD$pL-1f2y<1YH2bXM+}kE&$yE`XXo*=z7qzpr3-`
zS0JzqJH>&xp9{dYI2AMjbQb6g&@9k7phcjILCZilfYyMPgEoVn1`WV9XCSuyv7pa^
zrh?{z&H`Nvngv=3S_E1LS_Zlr&-`k2WHutx0{Ss%kS}AyPr)G2WYAR5J3wcF&IQc^
zeHyd~bTMcd=<VM^5oiwtLo4V2&`>P!e*=vNodh}&^ij|Z(3e4TK#M^2Vr1Syh8~Y>
z0<8tT_q5x688izt98Y+PK!<^T1eylA3v>>s3p5ur0+0DiK;uAnfldZ(0Nn&?MeNjo
z+ChWy#%l~{1n5-IIG0;@&qHPy7zLoIpc_CZfmVP{1x-TG%>kVTngu!^bQ$O}&=Sy6
z(4}|>Tmu@6x5>?fK?CqhreM5^j|E){nhe?(`=bodwV*kK&+DiV1ecyi1?(1I0gZuz
z^`ONN_!M*-Xf<dpXiv<*%b-tz+VNJQ8Z;TS0W=-d2UB+eXar~>XaeXK(3?T4K<@>m
zw-odp9~;`;r6UuAOlS*w3K{`A4fI9OEYQ`UMW8jHWuPw58qgNdBp7VH2zgNYYAby#
zPp3^{mIXE+@guy*0IN0ELS=TOyc#qL%EooFjdyr;#AIRIUS!qAAoB!2zar8ygLf>7
zwA{^S7KQPoBCF+Q%4r)=J{-A7OJDwMQKXg#MV)x(q7YsRnRtHajW8_=SMpIpIsv%>
z{1EC*Ms6T~e`OfAue56MsMV8d`7Qx}I8Y2Bjee|<C~EFPE{<}%V5Qa4gKBD*!Rv(_
zwM}>!wm<`r3*ikbL!!km4UJwRieP38()@SbZu-5WwUP&~8sJ-k8YlO=-M8?WtHQL8
z4`Xr(+Y44%wf#WB!luiRDhKK;YzoK9ww1pR`C%gW#j42u8&OJ!3Rw9-%_d!VPquY2
zB*?|{KsTaS{e`{)plv_{`N`EGz8iolf%*{ADu9minQw&oHX>I6euSvQung{zQod0@
zRY0M_q6DA{;pxf9Rr4R;2=mEA?s5(HD~|9jKsFBdd459C2B0XQ?xJc1P!B${7|kIU
z3w|I!v@+Be<4;1ny?LkNuD*7_9ax<Gg@!Ren<Ubv0<Grfp<y0!URZHEk`zyR)2g*d
zDc=n!`xdB|&`<&N1CWg`EDELHmmU>@XxNI?cMpH<%}75xa*sgUK?|9nB?0!}omYqX
zPD8E})@7pu^ML{de;IODuy6}LPhV}-+(4p1trBG#U${C_YXMJmL$hLi{+6#?9qC^U
zUI|9Yx?vz6yta#$jFP)~J=#h~E*)(}3bPlO$Y{9`Xr^d+3vy|Y>J8V0_*MZ;1scLT
z7Kdqc6`0K*TNCC>*Ma-N@5>LZ3K>*~Ue5uVPVH7HQ8OW1TWo#ao1$hSYS7aaqYw1^
zw+-9^O*zPY3BFA@I&F;=cY4&qHt;uruMuCX1u7DJx_~SL-v|J@j4TpTu!EPcvHHD(
z-Rj5ikhP9~xu&ac8U)53aJ!>~nmItT`OK0qEf={UQmCy#&PF+&`L@-<DCbiLUhCKV
z%T-+mZ9t!!;Zyo0v~|rO&y2Xk)3+#GL$>1CX_jat0VskWdK>Eka?goeCUU2c!)#t<
z<@U8!|C@0U<m9jG<7k|GOGyWKLWgf9>7dJ?(C7m4;tSV?`B-ta`Rx>6wKhV(fZ{ty
zL28`Gs9TL`Y6rg+j_Qsp=2ViItjL&yLNZb4=bch!*0nM;a7)nSV#wfXpsuJqx=7RL
zVmP0Vdne47E{BUCB_=U1c*m+e4J3lg_cF>B0ExMzh2whn2z5pqhTMacTUuh(=+*EP
z>aFh_unU3GMBj6PDtXV6NdK+i&4UeAr|_6Y7fv4<Okdi!T|wy(s=-T3td>y0kHQr$
zpi#z90#F=3gu$PT+=KkblItxSc+Yi_mSR43-Pn-TiR^iAt;m}#_tucFz+diM7p5bB
z#7dl#R&BAy+#<hG({^fXn@0Ta#NYFp_KFXC$%i<f`e=uJSf$9j#oy%}w6|>R-yITv
z@4#9_zQ{(B2gTp-Y}(Jh><?Sw0bjPum-1(Qsq_s$ZFP@C_JN<a)1Q6em$<^8E%T@R
zHh(Jq34i&x^<f>5|EweO|1k0|1tS0K`mp=J|0akeF9vDZ!OYn?@pxxe)0y&@I}`uC
zVEVf|SUViT>Vp&C4Pk3SC|?;ue7E?!JXCwD3;TCy;_soXMdXXRK>ttc!^t&U!?jD{
z>|(eV^5xw+;qQ@dT44lR7D1fL5!!E&Y+0nXF_OI#N%?OhFOj+L#Aw?`vz;+oc^~GA
z(X#rmOEFqWANFP+EkA*s7k~5mYTxx`Z}!!;_hnl}{zP9YUD1#JZtkb)`LXOkKkeIo
ztPZSLmJ>?_+r{77Sgo`_YmU`&`?H1pDZj2im7eO~5&)8uK<)EU^mpATZTV>S`KYKL
zN3qi)|Ke!kZyilexIFqr3&@JG+QqSK^H{$x#<D#ke{O6Tm9I$D_9wEPiQ0ukb|w)k
zVg8N$kAHXHJaR*CFYPt_qJPiknH&3AbUNGzaVHLbxOm0==#quTnH$B+tk}h1&$rk(
zxu)v?hU0&XAJXF+YT|>dC)<W!-QwEK3h*Zs6q_N2Z|Sj#pBsk=i~+@$eZ&v&@ikzE
z>CdjX-H$FPx7u(==JzN}W7rQqx|Me>9ih{4R$z!vuU%H#P^9rllaTI5nv1juX(`fb
zq)kXWkgAbRAzeW7+KncWdLa!(8jmyy>3*cSNQ;n`BCST+gtP;x8tK$-9IkNz886(F
z1taxB8j3U?X%f=?NOO@EAuUB(jkF1A2U0cCDWnTXUU<$KjMNKhDAIVONl5o2%|%*-
zv=nJI(k7%GNYzNE_D+TZWW4YKF&L>A(om%FNRyE6N1BVY2x%$OYNSm_JCLf8P9a@D
z^1|;DgOPe64c)i-_4j?eEiL@bEz!PNi><aSjH{jR+Y&v52DuocMuRIq*kXy#4E)6a
zJxYVS^;4^DD}LX;i+B4VTBD&`z{h^jTcg1p!~cmK4fjOu{Ghil1ytQlIA(y~xg~^G
zeh}ajfH4V3<|jVr<x9s7B~74<rtj8hjSd^B<Ab*L*62v9Rz78GZ(nhQSs~(zFWegK
zYm36EK=}6VF1`-(mHlxR8vg=PbRrs^jus>u3HUHTqu*E7@$Mh?_NCucHloZb%BG=A
zoRP-=^<i(V4AEM~mm^1UyNz#$JRKksv`NZe{xHCYo<@dl;+@L+YN03?&1aT{@QGzX
zUUzKfGr&yv2qDY!%6e<DwYVto_sjlEC&!ZCycq>FW8_+*-i&6E;X<O`3|DS^$caR~
z#f-q=3vi%;aq+{49BN=(W$}@RaCwVahzkguYLw$DL#G1C6P>(qY6pGfNiN<v$%Q`T
zVxry*H$eE1qltQpsfmdRR~wk7Fs^QJwt;E-0-H0_o6$6e{x(e0eliX_Xk!@bgPh9V
z3}5xdhkQ@eTdWVp%3)x-o?|TGbpzu^R`}S*^VuKA&6Mq0&@R4o-`1`L%S|k>Y}UfM
zup59g5n>?B3x2p2lzx~?F>OKZdqL^<xY#raoB>+JFMS+6q}DW^T3HBgh1q)x7POau
z)mByjm+}dpM2q*zQg;=&^afetZ-D9DF&RT`Uk3fA$!eorAlWt$g7l8rC=X<GXu~|b
z#xd##vQ%WAQ1D&A^MMW91KCXa4fg_t@dyO66#NWuj)L=na~1p=@Dc^T16-hB`ZE49
z1(yRCD!9^ur#D3k<7)^MEBJfhH41J4E&-N3*08jcD!2=9nS%QOmn-#00Pj-pI30`%
zg+Z^}D;4~A;3@^r1jaU_&4rHu*DCla;5r5805>RjDR85L^_5__z(B_^#)0fT;3fs{
z0RBP2M}f~M_zdt_U^%8&fSVQUk1K48f_nhBda%yoz`&NNO+g|s3--A9ZeW{&9|aCl
za4vATf{TIe3jPQ<R>9T4@oiWSWON6e(8dU4zXB&I*biMxRj?g6O~G_uJypSJ!08Hp
z060Uz&j4piti$CmgE3z+fY$<NDVQF1<|=p}aDjrq0WMVVMc`ru`(ZgRQE)VHsfl$O
z^Efcd6ahMQt6aeofh!a|4Y*3dbAW3V{0wk|g7bl03SI%+Y+zjk-8wK@6@fBfrYtOb
zfo%#t3LK>1)4<^h{sq{sU=0gatb)UV;|0e2Cl3q(BS8^J22N7&y}+poo(-I);AeoR
zD)<H9bOpZ-oT1=Nz?p>6zA#`n81of@6Tn#t{uMY^!GX907bv(VaG`=n02eEmzHU^a
z;Az06!1VN37%&@*GDYAi;0gu509>WuRlv0h-Ui&D;G@7U1-Ae<D>xVpw}#*hA!$H7
zWkNmk{&rxSg42P66r2ehu3+kkUBNE_$13;@;CKbU2b>U!A7z0G4}6A9k|Iz8oT}jO
zfYTKGJMdHm`(f9UuHbOs3<dWC&Qx#$@O)ii+zLjPf*%0RRq*4$1q#jwE>!R;;9>=T
z2wbAzD&SHDyMXmFh4BX%<q8hQzO6#Ry@9I~d_8cjf>VGS6g(Z+rQj!kn-!ezhwFc<
z!gvz`tczzzHUrxfyc;-3!CwJ~EBHrXyMo=ou?nWIqQ)z@w?F1zg2EUHfg}ar3Y@Co
zX~1a;ehhf3f}aOYSMW;U3<bXroT=cQbQI%!g>e`-OTpg*=PH<Ct6ZR9dgfE8;C{fx
z3LXhuqTq?Zr3%)kfl;O~9s@2{umiY4!7G5P6kG~itKfaW4GKOE>{9SAz|9`4vjFV%
zTRjXmfcF0QMmlDfn3gvK+Z6l&aFBwZ1P)j5Vqm+1UjdF)@VmhAZ5Y@8-C!iNF#;L=
zP9RCaez^HaRq$ZoGzHV)xl<LK4xFyw1;7~!UJjfoaVjo8o4}Ya8NijmSqlChI9I`b
zxci~UA5riSZNvKl7w~R-qjh?-ZEWNs*mjiCD{YBs^FG&Cv*9*J)S}ILHNLYTH-4$e
z99A%G)@y*VnGoZE%{r@9Fzwar6pX#P&KeX3ZPptVOq+F=f@!mUR>8DcZ&q+QaEpQ~
zfm;<!d-cl-{+>4T47Y^RV%n_RfMq1nW<5y3v{?^VFm2ZDN`2a_$0&FlaIAu9uRc)0
zf2YlSyuzT(`Y;94W<5c{v{@gcVA`xFDVR3v$qJs0f!>25R0lp)Dc4_wz<Tp0*~_aV
zdmC8Zd@`>Pw)HB!515`Jz;Ddr70$i^miN3Cudd7mOy@uu<)Q2%Fnz_<z=6yQ?-7-A
zr0-^NV5mptmH?}V23G^Chl7XUMqNGm`UPP1u+f)*E4lCfXs?0(e8B!VOF6%1|KOhL
zY1`XzZ$DQ#?D~7)B)$$+;?DE^s8Y=@?H@e83ir%pH=Uz<1-Jk5*#eysYsKxqdT47X
zuzC>i-M~{@`0N95<JD8Gug60I_1w_gfYqZ}9|Ts<fIbXtzlnc+poirXe(6B8t{$r%
ziYJcp@c|tw+7nnk9r;FjBB`A7nhva<cs&<bJ-GHcVD%W*i@@rc;8Ec?%~d`1{82o@
zn9bK!-f^dT4t4_`WT@xYM&bE|dV2iJ!0I8)Zv(3b_^t=u!zX+Z-Af)m-3u$$X#9L%
zJyCTTFrJmX@I{ZF>RGiHz*dhZz7>K02;cWbbg+6J?5E&P^5?&O(PM~uF0BJcTdBvu
zt^!t%g^$9yTQm5CFQdn)=X}2nu6ateI6O8ey8T)1w*jlC<sJmSz}I~_xTks+_8>bh
zsx6*#l>Y|2jbHjQx~F<V_9bxDgK7PH;)NX_c`$msdi?GE;Hu|ve*ml=cY7XK9r#w@
zq-6g3!NksO2adz#$9mzq&YKQKcUDgaj_r*HB)nTyv}Ft*Sry$=J(Hcz#}~&{Bk*X@
zqJdlaQ;?m*UxTcA(DM<LsV7a})d%M+^J9=wkB8m~u6kzq$i7%!c(+5*mNGu_&|nL`
ze03;#ym3ai(PmLUSdH)Gj)4s{bGHGj|7_qFVD%(@pI8Vc^Zkc<^i=;Pz<jXj;A?EA
zL|0w_KFfWpqlc(RrXK`XJ;%2dSpCNYzWpg;?x~KpoZwGYNB6u1hYVx*g~r1uQ%}bJ
z6}XOnR2>~WgBc4CxiEVG#^xseLv@eN>c3n#1NLvc+u^}I)g$Q-Uf2FOaqB>s#~*?e
z!?)z^XqY^b4X%11^>4si`A3Iu^z!rLza8$;Q$14sg*aT(FM5v8-VW^IBWrH-8s_Ft
z*YudA{+olT@$HX0F9f!uGkAzDx_l8>u2^((H5=0YzYq)nj;i24)btn<fHpDqqS`L7
z)kDmEhT`QR<_a7p%Hx1@_{bxJ@h!ZEjtuUso*y1@J<c2F>y8W_;yKJef_(&TmJ%e#
zfz@-}Ck~@m;=V_t$El|}N8P~M9YdW3tp3-BUBE5qt~{vwXW(M~(9yxVdTRcQ!`mO%
zeH2*zPYEMNwExEidBEy1{-=R2<BCmtmd@DwT?CdNT*z4G1c~ra4B6NO?6TAY%M-2=
zm<p_(34i*k^5~Ip7UD<Fs6=4-p$29FtA}Inx~jbUDC_~U;1^s&#dtlpdHGk1hQB)6
V-x3h|zZ`LWz2(Dy1zO(s`XBK=3-|y4

delta 25786
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
XFM8(tAV)loWWLbxPFT3(&7l7U)L2|X

diff --git a/NPAnalysis/10He_Riken/include/ObjectManager.hh b/NPAnalysis/10He_Riken/include/ObjectManager.hh
index 9f84a86bd..7898e3e60 100644
--- a/NPAnalysis/10He_Riken/include/ObjectManager.hh
+++ b/NPAnalysis/10He_Riken/include/ObjectManager.hh
@@ -109,7 +109,7 @@ namespace ENERGYLOSS
 		//	3He Energy Loss
 			EnergyLoss He3TargetWind = EnergyLoss 	(	"3He_Mylar.txt" 		,
 														1000	 				,
-														3						,
+														3					,
 														3						);
 		
 			EnergyLoss He3TargetGaz = EnergyLoss 	(	"3He_D2solid_1b_26K.txt" 	,
diff --git a/NPAnalysis/10He_Riken/src/Analysis.cc b/NPAnalysis/10He_Riken/src/Analysis.cc
index e6b193ec1..4009505cb 100644
--- a/NPAnalysis/10He_Riken/src/Analysis.cc
+++ b/NPAnalysis/10He_Riken/src/Analysis.cc
@@ -73,7 +73,8 @@ int main(int argc,char** argv)
 
 	// Get Must2 Pointer:
 	MUST2Array* M2 = (MUST2Array*) myDetector -> m_Detector["MUST2"] ;
-	
+	// Allow directe acces to MUST2 Physics event
+	TMust2Physics* M2Physics = M2 -> GetPhysics();
 	cout <<  " ///////// Starting Analysis ///////// "<< endl << endl ;
 	
 	int i ,N=Chain -> GetEntries();
@@ -115,6 +116,8 @@ int main(int argc,char** argv)
 			myDetector -> BuildPhysicalEvent()				;
 			////
 			
+			
+			
 			// Target (from initial condition)
 			XTarget = Init->GetICPositionX(0);
 			YTarget = Init->GetICPositionY(0);
@@ -127,7 +130,7 @@ int main(int argc,char** argv)
 			// Must 2 And ThinSi //
 			for(int hit = 0; hit < M2 -> GetEventMultiplicity() ; hit ++)
 				{
-					ELab[hit] = M2 -> GetEnergyDeposit(hit);
+				//	ELab[hit] = M2 -> GetEnergyDeposit(hit);
 					TVector3 HitDirection  = M2 -> GetPositionOfInteraction(hit) - TVector3(XTarget,YTarget,0);
 					
 					// Angle between beam and particle
@@ -140,10 +143,12 @@ int main(int argc,char** argv)
 					if(M2 -> GetPositionOfInteraction(hit).Z()>0)
 						{
 							if(ELab[hit]>-1000 && ThinSi_E>0 )	
+							if(M2Physics.CsI.size)
 								{
 										ELab[hit]= He3StripAl.EvaluateInitialEnergy(	ELab[hit] 				, // Energy of the detected particle
 																																	2*0.4*micrometer	, // Target Thickness at 0 degree
 																																	ThetaMM2Surface		);
+
 																				
 										ELab[hit]= He3StripSi.EvaluateInitialEnergy(	ELab[hit] 				, // Energy of the detected particle
 																																	20*micrometer			, // Target Thickness at 0 degree
@@ -172,7 +177,8 @@ int main(int argc,char** argv)
 
 							else if(ELab[hit]>-1000 )
 								{
-									if(ELab[hit]>21.66)//CsI are inside a Mylar foil, plus rear alu strip
+					
+								if(ELab[hit]>21.66)//CsI are inside a Mylar foil, plus rear alu strip
 										{
 											ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] 		, // Energy of the detected particle
 																						3*micrometer		, // Target Thickness at 0 degree
@@ -180,8 +186,7 @@ int main(int argc,char** argv)
 											ELab[hit]= He3StripAl.EvaluateInitialEnergy(	ELab[hit] 		, // Energy of the detected particle
 																						0.4*micrometer		, // Target Thickness at 0 degree
 																						ThetaMM2Surface		);
-										}
-								
+										}							
 									ELab[hit]= He3StripAl.EvaluateInitialEnergy(	ELab[hit] 		, // Energy of the detected particle
 																				0.4*micrometer		, // Target Thickness at 0 degree
 																				ThetaMM2Surface		);
@@ -259,7 +264,6 @@ int main(int argc,char** argv)
 	return 0	;
 }
 
-
 double ThetaCalculation (TVector3 A , TVector3 B)
 	{
 		double Theta = acos( (A.Dot(B)) / (A.Mag()*B.Mag()) ) ;
diff --git a/NPLib/DummyDetector/TDUMMYDetectorDataDict.cxx b/NPLib/DummyDetector/TDUMMYDetectorDataDict.cxx
index f0f60697f..00fdadd5b 100644
--- a/NPLib/DummyDetector/TDUMMYDetectorDataDict.cxx
+++ b/NPLib/DummyDetector/TDUMMYDetectorDataDict.cxx
@@ -1,5 +1,5 @@
 //
-// File generated by rootcint at Fri Oct 16 12:56:33 2009
+// File generated by rootcint at Tue Oct 20 12:17:59 2009
 
 // Do NOT change. Changes will be lost next time file is generated
 //
diff --git a/NPLib/InitialConditions/TInitialConditions.h b/NPLib/InitialConditions/TInitialConditions.h
index 96d8e9cec..468e941d2 100644
--- a/NPLib/InitialConditions/TInitialConditions.h
+++ b/NPLib/InitialConditions/TInitialConditions.h
@@ -28,7 +28,6 @@
 
 #include <vector>
 #include "TObject.h"
-
 using namespace std ;
 
 
diff --git a/NPLib/MUST2/Must2Array.h b/NPLib/MUST2/Must2Array.h
index 6e91fcab2..d8babeea6 100644
--- a/NPLib/MUST2/Must2Array.h
+++ b/NPLib/MUST2/Must2Array.h
@@ -98,11 +98,14 @@ class MUST2Array : public NPA::VDetector
 				
 				TVector3 GetPositionOfInteraction(int i)	 ;	
 				TVector3 GetTelescopeNormal(int i)		;
+
+				TMust2Physics* GetPhysics() {return EventPhysics ;};
+
 				void Print()	;
 
 			private:	//	Root Input and Output tree classes
 				
-				TMust2Data* 	EventData		;
+				TMust2Data* 	  EventData		;
 				TMust2Physics* 	EventPhysics	;
 
 
diff --git a/NPLib/MUST2/TMust2Data.h b/NPLib/MUST2/TMust2Data.h
index 043937897..654e999cd 100644
--- a/NPLib/MUST2/TMust2Data.h
+++ b/NPLib/MUST2/TMust2Data.h
@@ -139,12 +139,12 @@ class TMust2Data : public TObject {
 
 		// SiLi
 		//(E)
-		UShort_t	GetMMSiLiEMult()				{return fMM_SiLiE_DetectorNbr.size();}
+		UShort_t	GetMMSiLiEMult()								{return fMM_SiLiE_DetectorNbr.size();}
 		UShort_t	GetMMSiLiEDetectorNbr(Int_t i)  {return fMM_SiLiE_DetectorNbr.at(i);}
 		UShort_t	GetMMSiLiEPadNbr(Int_t i)       {return fMM_SiLiE_PadNbr.at(i);}
 		Double_t	GetMMSiLiEEnergy(Int_t i)       {return fMM_SiLiE_Energy.at(i);}
 		//(T)
-		UShort_t	GetMMSiLiTMult()				{return fMM_SiLiT_DetectorNbr.size();}
+		UShort_t	GetMMSiLiTMult()								{return fMM_SiLiT_DetectorNbr.size();}
 		UShort_t	GetMMSiLiTDetectorNbr(Int_t i)  {return fMM_SiLiT_DetectorNbr.at(i);}
 		UShort_t	GetMMSiLiTPadNbr(Int_t i)       {return fMM_SiLiT_PadNbr.at(i);}
 		Double_t	GetMMSiLiTTime(Int_t i)         {return fMM_SiLiT_Time.at(i);}
diff --git a/NPLib/MUST2/TMust2Physics.cxx b/NPLib/MUST2/TMust2Physics.cxx
index 137e8a86a..20d7240be 100644
--- a/NPLib/MUST2/TMust2Physics.cxx
+++ b/NPLib/MUST2/TMust2Physics.cxx
@@ -24,6 +24,9 @@
 #include <iostream>
 #include <cmath>
 
+// ROOT 
+#include "TVector2.h" 
+
 ClassImp(TMust2Physics)
 
 TMust2Physics::TMust2Physics() 
@@ -71,13 +74,15 @@ void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
 						TelescopeNumber.push_back(Data->GetMMStripXEDetectorNbr(0))	;
 					
 						//	Data->Get Max Energy
-						if(Data->GetMMStripXEEnergy(0) > Data->GetMMStripYEEnergy(0))	Si_E.push_back( Data->GetMMStripXEEnergy(0) ) ;
-						else															Si_E.push_back( Data->GetMMStripYEEnergy(0) ) ;
-						
+				//		if(Data->GetMMStripXEEnergy(0) > Data->GetMMStripYEEnergy(0))	Si_E.push_back( Data->GetMMStripXEEnergy(0) ) ;
+				//		else															Si_E.push_back( Data->GetMMStripYEEnergy(0) ) ;
+						Si_E.push_back( Data->GetMMStripXEEnergy(0) ) ;
+					
 						//	Data->Get Min Time
-						if(Data->GetMMStripXTTime(0) < Data->GetMMStripYTTime(0))		Si_T.push_back( Data->GetMMStripXTTime(0) ) ;
-						else															Si_T.push_back( Data->GetMMStripYTTime(0) ) ;
-						
+				//		if(Data->GetMMStripXTTime(0) < Data->GetMMStripYTTime(0))		Si_T.push_back( Data->GetMMStripXTTime(0) ) ;
+				//		else															Si_T.push_back( Data->GetMMStripYTTime(0) ) ;
+						Si_T.push_back( Data->GetMMStripXTTime(0) ) ;
+
 						Si_X.push_back( Data->GetMMStripXEStripNbr(0) )	;
 						Si_Y.push_back( Data->GetMMStripYEStripNbr(0) )	;	
 						
@@ -125,11 +130,17 @@ void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
 							}
 							
 					 
-					 if      (!Check_SiLi && !Check_CsI ) TotalEnergy.push_back(   			     Si_E.at(0)					);
-					 else if (Check_SiLi  && !Check_CsI ) TotalEnergy.push_back(               + Si_E.at(0) + SiLi_E.at(0)	);
-					 else if (Check_CsI   && !Check_SiLi) TotalEnergy.push_back( CsI_E .at(0)  + Si_E.at(0)					);
-					 else if (Check_CsI   &&  Check_SiLi) TotalEnergy.push_back( CsI_E .at(0)  + Si_E.at(0) + SiLi_E.at(0)	);
+					 			if(!Check_SiLi && !Check_CsI ) { 	TotalEnergy.push_back( Si_E.at(0) )									; 
+					 																				CsI_E.push_back(0) 		;  CsI_T.push_back(0) 				; 
+																									SiLi_E.push_back(0) 	;  SiLi_T.push_back(0) 				;	}
+																									
+					 else if (Check_SiLi  && !Check_CsI ) {	TotalEnergy.push_back( Si_E.at(0) + SiLi_E.at(0) )	;
+					 																				CsI_E.push_back(0) 	;  CsI_T.push_back(0) 					; }
+																																				
+					 else if (Check_CsI   && !Check_SiLi) {	TotalEnergy.push_back( CsI_E .at(0)  + Si_E.at(0) )	; 
+																									SiLi_E.push_back(0) 	;  SiLi_T.push_back(0) 				;	}
 					 
+					 TotalEnergy.push_back( CsI_E[0]  + Si_E[0] + SiLi_E[0]	);
 					 return;
 					}
 
@@ -217,10 +228,9 @@ void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
 													&&	Data->GetMMCsIEEnergy(i) > CsI_E_Threshold	)
 													{
 														Check_CsI = true ;
-														CsI_E.push_back(Data->GetMMCsIEEnergy(i))		;
-//														cout << Data->GetMMCsIEEnergy(i) << endl;
+														CsI_E.push_back(Data->GetMMCsIEEnergy(i))			;
 														CsI_N.push_back(Data->GetMMCsIECristalNbr(i))	;
-														CsI_T.push_back(Data->GetMMCsITTime(i))			;
+														CsI_T.push_back(Data->GetMMCsITTime(i))				;
 													}
 													
 											}
@@ -232,9 +242,9 @@ void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
 												CsI_N.push_back(-2)	;
 											}
 										
-										TotalEnergy.push_back(Si_E.at(jj)) ;
-										if (Check_SiLi) TotalEnergy.at(jj) += SiLi_E.at(jj)	;
-										if (Check_CsI)  TotalEnergy.at(jj) += CsI_E.at(jj)	;
+										TotalEnergy.push_back(Si_E[jj])) ;
+										if (Check_SiLi) TotalEnergy[jj] += SiLi_E[jj]	;
+										if (Check_CsI)  TotalEnergy[jj] += CsI_E[jj]	;
 									}	
 							}
 						return;	
@@ -284,13 +294,279 @@ void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
 			
 	}
 
+/////////////////////////////////////////////
+int TMust2Physics :: CheckEvent()
+	{
+		// Check the size of the different elements
+				 if(			Data->GetMMStripXEMult() == Data->GetMMStripYEMult() && Data->GetMMStripYEMult() == Data->GetMMStripXTMult() &&  Data->GetMMStripXTMult() == Data->GetMMStripYTMult()  )
+	
+					return 1 ; // Regular Event
+	
+		else if(			Data->GetMMStripXEMult() == Data->GetMMStripYEMult()+1 || Data->GetMMStripXEMult() == Data->GetMMStripYEMult()-1  )
+	
+					return 2 ; // Pseudo Event, potentially interstrip
+		
+		else return -1 ; // Rejected Event
+		
+		
+		return -1 		 ; // Rejected Event 
+	}
+
+/////////////////////////////////////////////
+bool TMust2Physics :: ResolvePseudoEvent()
+	{
+	
+		return false;
+	}
+
+/////////////////////////////////////////////
+vector < TVector2 > TMust2Physics :: Match_X_Y()
+	{
+		vector < TVector2 > ArrayOfGoodCouple ;
+		
+		for(int i = 0 ; i < Data->GetMMStripXEMult(); i++)
+			{
+				for(int j = 0 ; j < Data->GetMMStripYEMult(); j++)
+					{
+							if ( Data->GetMMStripXEDetectorNbr(i) == Data->GetMMStripYEDetectorNbr(j) )
+									{
+											if( fabs(Data->GetMMStripXEEnergy(i) - Data->GetMMStripYEEnergy(j))/Data->GetMMStripXEEnergy(i) < 0.1	)
+												ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;	
+									}
+					}
+			}
+	
+		if( ArrayOfGoodCouple.size() > Data->GetMMStripXEMult() ) ArrayOfGoodCouple.clear() ;
+		
+		return ArrayOfGoodCouple;	
+	}
+	
+	
+/////////////////////////////////////////////
+bool TMust2Physics :: Match_Si_SiLi(TVector2 SiCouple)
+	{
+	 
+		for(int i = 0 ; i < Data->GetMMSiLiEMult() ; i++ )
+			{
+							if( 	 Data->GetMMSiLiEPadNbr(i) == 1 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 2 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 3 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 4 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 5 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 6 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 7 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 8 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 9 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 10 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 11 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 12 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 13 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 14 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 15 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMSiLiEPadNbr(i) == 16 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;		
+			}
+
+		return false;
+	}
+
+
+/////////////////////////////////////////////
+vector < TVector3 > TMust2Physics :: Match_Si_CsI()
+	{
+		for(int i = 0 ; i < Data->GetMMCsIEMult() ; i++ )
+			{
+							if( 	 Data->GetMMCsIECristalNbr(i) == 1 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 2 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 3 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 4 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 5 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 6 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 7 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
 
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 8 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 9 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 10 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 11 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 12 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 13 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 14 
+									&& Data->GetMMStripXEStripNbr(Int_t i)<1 && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)<1 && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 15 
+									&& Data->GetMMStripXEStripNbr(Int_t i)< && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)< && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+
+				else	if( 	 Data->GetMMCsIECristalNbr(i) == 16 
+									&& Data->GetMMStripXEStripNbr(Int_t i)< && Data->GetMMStripXEStripNbr(Int_t i)>1 
+									&& Data->GetMMStripYEStripNbr(Int_t i)< && Data->GetMMStripYEStripNbr(Int_t i)>1 ) 
+
+						return true ;
+			}
+
+
+		return false;
+	}
+
+/////////////////////////////////////////////
 void TMust2Physics::Clear()
 	{
 		EventMultiplicity= 0		;
+		
 		TelescopeNumber	.clear()	;
-		EventType		.clear()	;
-		TotalEnergy		.clear()	;
+		EventType				.clear()	;
+		TotalEnergy			.clear()	;
 		
 		// Si X
 		Si_E.clear()	;
@@ -309,3 +585,5 @@ void TMust2Physics::Clear()
 		CsI_N.clear()	;
 	}
 
+
+
diff --git a/NPLib/MUST2/TMust2Physics.h b/NPLib/MUST2/TMust2Physics.h
index 22bd7b3b5..d2b52c6c1 100644
--- a/NPLib/MUST2/TMust2Physics.h
+++ b/NPLib/MUST2/TMust2Physics.h
@@ -36,11 +36,12 @@ class TMust2Physics : public TObject
 
 	public: 
 	void Clear()									;	
-        void Clear(const Option_t*) {};
+  void Clear(const Option_t*) {};
 	void BuildPhysicalEvent(TMust2Data* Data)		;
 	void BuildSimplePhysicalEvent(TMust2Data* Data)	;
 		
 	public:
+	
 	//	Provide Physical Multiplicity
 	Int_t			EventMultiplicity	;
 				
diff --git a/NPSimulation/include/Must2Scorers.hh b/NPSimulation/include/Must2Scorers.hh
index 098cdbd38..b9aac0754 100644
--- a/NPSimulation/include/Must2Scorers.hh
+++ b/NPSimulation/include/Must2Scorers.hh
@@ -78,6 +78,30 @@ namespace MUST2 {
 	   G4THitsMap<G4double>* EvtMap;
 	};
 	
+	
+		class PSPadOrCristalNumber : public G4VPrimitiveScorer
+	{
+
+	public: // with description
+	   PSPadOrCristalNumber(G4String name, G4int depth = 0, G4String Type = "XXX");
+	   virtual ~PSPadOrCristalNumber();
+
+	protected: // with description
+	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+	public:
+	   virtual void Initialize(G4HCofThisEvent*);
+	   virtual void EndOfEvent(G4HCofThisEvent*);
+	   virtual void clear();
+	   virtual void DrawAll();
+	   virtual void PrintAll();
+
+	private:
+	   bool m_type;
+	   G4int HCID;
+	   G4THitsMap<G4double>* EvtMap;
+	};
+	
 }
 
 #endif
diff --git a/NPSimulation/src/EventGeneratorTransfert.cc b/NPSimulation/src/EventGeneratorTransfert.cc
index d0b3b32b6..ef6a7a4e2 100644
--- a/NPSimulation/src/EventGeneratorTransfert.cc
+++ b/NPSimulation/src/EventGeneratorTransfert.cc
@@ -350,9 +350,9 @@ void EventGeneratorTransfert::GenerateEvent(G4Event* anEvent , G4ParticleGun* pa
    G4double x0 = InterCoord.x();
    G4double y0 = InterCoord.y();
    G4double z0 = InterCoord.z();
-   m_InitConditions->SetICPositionX(x0);
-   m_InitConditions->SetICPositionY(y0);
-   m_InitConditions->SetICPositionZ(z0);
+   m_InitConditions->SetICPositionX(x0);//
+   m_InitConditions->SetICPositionY(y0);//
+   m_InitConditions->SetICPositionZ(z0);//
 
    // write emittance angles to ROOT file
    m_InitConditions->SetICIncidentEmittanceTheta(Beam_thetaX / deg);
diff --git a/NPSimulation/src/EventGeneratorTransfertToResonance.cc b/NPSimulation/src/EventGeneratorTransfertToResonance.cc
index e1229e51f..8454e90d9 100644
--- a/NPSimulation/src/EventGeneratorTransfertToResonance.cc
+++ b/NPSimulation/src/EventGeneratorTransfertToResonance.cc
@@ -410,6 +410,7 @@ void EventGeneratorTransfertToResonance::GenerateEvent(G4Event* anEvent , G4Part
                             	
 	else 
 		InterCoord = G4ThreeVector(0,0,0);
+
    // write vertex position to ROOT file
    G4double x0 = InterCoord.x();
    G4double y0 = InterCoord.y();
@@ -472,17 +473,6 @@ void EventGeneratorTransfertToResonance::GenerateEvent(G4Event* anEvent , G4Part
                                          sin(ThetaHeavy) * sin(phi),
                                          cos(ThetaHeavy));
 
-
-   // Move to the target
-if( m_Target !=0)   {
-   x0 += m_Target->GetTargetX() ;
-   y0 += m_Target->GetTargetY() ;
-   z0 += m_Target->GetTargetZ() ;
-		}
-   // write vertex position to ROOT file
-   m_InitConditions->SetICPositionX(x0);
-   m_InitConditions->SetICPositionY(y0);
-   m_InitConditions->SetICPositionZ(z0);
    //////////////////////////////////////////////////
    ///////// Set up everything for shooting /////////
    //////////////////////////////////////////////////
diff --git a/NPSimulation/src/GeneralScorers.cc b/NPSimulation/src/GeneralScorers.cc
index 7c260c6df..4ab30937e 100644
--- a/NPSimulation/src/GeneralScorers.cc
+++ b/NPSimulation/src/GeneralScorers.cc
@@ -36,7 +36,6 @@ int GENERALSCORERS::PickUpDetectorNumber(G4Step* aStep, std::string DetName)
 	{
 		std::string name = aStep->GetTrack()->GetVolume()->GetName();
   	std::string nbr ;
-
 		size_t start, end ;
     start = name.find(DetName) + DetName.length();
 		end   = name.find("_");
diff --git a/NPSimulation/src/MUST2Array.cc b/NPSimulation/src/MUST2Array.cc
index 83c65039c..d8420df91 100644
--- a/NPSimulation/src/MUST2Array.cc
+++ b/NPSimulation/src/MUST2Array.cc
@@ -342,15 +342,15 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
             -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
             0);
 
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT  , logicSiLi_LT  , Name + "_SiLi_LT"  , logicSiLi , false , 0)  ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT  , logicSiLi_RT  , Name + "_SiLi_RT"  , logicSiLi , false , 0)  ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1 , logicSiLi_LC1 , Name + "_SiLi_LC1" , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1 , logicSiLi_RC1 , Name + "_SiLi_RC1" , logicSiLi , false , 0)   ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT  , logicSiLi_LT  , Name + "_SiLi_Pad1"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT  , logicSiLi_RT  , Name + "_SiLi_Pad2"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1 , logicSiLi_LC1 , Name + "_SiLi_Pad3" , logicSiLi , false , 0)   ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1 , logicSiLi_RC1 , Name + "_SiLi_Pad4" , logicSiLi , false , 0)   ;
 
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB  , logicSiLi_LB  , Name + "_SiLi_LB"  , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB  , logicSiLi_RB  , Name + "_SiLi_RB"  , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2 , logicSiLi_LC2 , Name + "_SiLi_LC2" , logicSiLi , false , 0) ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2 , logicSiLi_RC2 , Name + "_SiLi_RC2" , logicSiLi , false , 0) ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB  , logicSiLi_LB  , Name + "_SiLi_Pad5"  , logicSiLi , false , 0)   ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB  , logicSiLi_RB  , Name + "_SiLi_Pad6"  , logicSiLi , false , 0)   ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2 , logicSiLi_LC2 , Name + "_SiLi_Pad7" , logicSiLi , false , 0) ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2 , logicSiLi_RC2 , Name + "_SiLi_Pad8" , logicSiLi , false , 0) ;
 
       logicSiLi->SetVisAttributes(G4VisAttributes(G4Colour(1, 1., 1.)));
 
@@ -812,15 +812,15 @@ void MUST2Array::ReadConfiguration(string Path)
 // Called After DetecorConstruction::AddDetector Method
 void MUST2Array::ConstructDetector(G4LogicalVolume* world)
 {
-   G4RotationMatrix* MMrot  	= NULL              		;
-   G4ThreeVector     MMpos  	= G4ThreeVector(0, 0, 0) 	;
+   G4RotationMatrix* MMrot  		= NULL              			;
+   G4ThreeVector     MMpos  		= G4ThreeVector(0, 0, 0) 	;
    G4ThreeVector     MMu       	= G4ThreeVector(0, 0, 0) 	;
    G4ThreeVector     MMv       	= G4ThreeVector(0, 0, 0) 	;
    G4ThreeVector     MMw       	= G4ThreeVector(0, 0, 0) 	;
-   G4ThreeVector     MMCenter 	= G4ThreeVector(0, 0, 0)  	;
-   bool           	 Si     	= true           			;
-   bool          	 SiLi   	= true           			;
-   bool           	 CsI    	= true           			;
+   G4ThreeVector     MMCenter 	= G4ThreeVector(0, 0, 0)  ;
+   bool           	 Si     		= true           					;
+   bool          	 	 SiLi   		= true           					;
+   bool           	 CsI    		= true           					;
 
    G4int             NumberOfTelescope = m_DefinitionType.size() ;
 
@@ -923,102 +923,115 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 
 // Si
 	std::map<G4int, G4int*>::iterator DetectorNumber_itr    ;
-	std::map<G4int, G4double*>::iterator Energy_itr     	;
-	std::map<G4int, G4double*>::iterator Time_itr    		;
-	std::map<G4int, G4double*>::iterator X_itr       		;
-	std::map<G4int, G4double*>::iterator Y_itr       		;
-	std::map<G4int, G4double*>::iterator Pos_X_itr       	;
-	std::map<G4int, G4double*>::iterator Pos_Y_itr       	;
-	std::map<G4int, G4double*>::iterator Pos_Z_itr       	;
+	std::map<G4int, G4double*>::iterator Energy_itr     		;
+	std::map<G4int, G4double*>::iterator Time_itr    				;
+	std::map<G4int, G4double*>::iterator X_itr       				;
+	std::map<G4int, G4double*>::iterator Y_itr       				;
+	std::map<G4int, G4double*>::iterator Pos_X_itr     	  	;
+	std::map<G4int, G4double*>::iterator Pos_Y_itr     	  	;
+	std::map<G4int, G4double*>::iterator Pos_Z_itr       		;
 	std::map<G4int, G4double*>::iterator Ang_Theta_itr      ;
 	std::map<G4int, G4double*>::iterator Ang_Phi_itr       	;
 	
-	G4THitsMap<G4int>*	  DetectorNumberHitMap				;      
-	G4THitsMap<G4double>* EnergyHitMap              		;
-	G4THitsMap<G4double>* TimeHitMap             			;
-	G4THitsMap<G4double>* XHitMap                			;	
-	G4THitsMap<G4double>* YHitMap               			;
-	G4THitsMap<G4double>* PosXHitMap                		;
-	G4THitsMap<G4double>* PosYHitMap                		;
-	G4THitsMap<G4double>* PosZHitMap                		;
-	G4THitsMap<G4double>* AngThetaHitMap                	;
-	G4THitsMap<G4double>* AngPhiHitMap                		;
-
-// NULL pointer are given to avoid warning at compilation
+	G4THitsMap<G4int>*	  DetectorNumberHitMap							;      
+	G4THitsMap<G4double>* EnergyHitMap              				;
+	G4THitsMap<G4double>* TimeHitMap             						;
+	G4THitsMap<G4double>* XHitMap                						;	
+	G4THitsMap<G4double>* YHitMap               						;
+	G4THitsMap<G4double>* PosXHitMap                				;
+	G4THitsMap<G4double>* PosYHitMap                				;
+	G4THitsMap<G4double>* PosZHitMap                				;
+	G4THitsMap<G4double>* AngThetaHitMap               			;
+	G4THitsMap<G4double>* AngPhiHitMap                			;
 
 // Si(Li)
    std::map<G4int, G4double*>::iterator SiLiEnergy_itr 		;
-   G4THitsMap<G4double>* 				SiLiEnergyHitMap	;
+   std::map<G4int, G4double*>::iterator SiLiPadNbr_itr 		;
+   G4THitsMap<G4double>* 				SiLiEnergyHitMap					;
+   G4THitsMap<G4double>* 				SiLiPadNbrHitMap					;
+   
 // CsI
    std::map<G4int, G4double*>::iterator CsIEnergy_itr  		;
-   G4THitsMap<G4double>* 				CsIEnergyHitMap 	;
+   std::map<G4int, G4double*>::iterator CsICristalNbr_itr ;
+   G4THitsMap<G4double>* 				CsIEnergyHitMap 					;
+   G4THitsMap<G4double>* 				CsICristalNbrHitMap 			;
 //////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////
 
     // Read the Scorer associate to the Silicon Strip
     
 	    //Detector Number
-	    G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/DetectorNumber")  	;
-	    DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID))       	;
-	    DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin()                                               ;
+	    G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/DetectorNumber") 		;
+	    DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID))       				;
+	    DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin()                                               			;
 	    
 	    //Energy
-	    G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripEnergy")   ;
-	    EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))           ;
-	    Energy_itr = EnergyHitMap->GetMap()->begin()                                                          		;
+	    G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripEnergy") 		;
+	    EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))           			;
+	    Energy_itr = EnergyHitMap->GetMap()->begin()                                                          						;
 
 	    //Time of Flight
-	    G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripTime")    	;
-	    TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))               ;
-	    Time_itr = TimeHitMap->GetMap()->begin()                                                              		;
+	    G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripTime")    		;
+	    TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))               			;
+	    Time_itr = TimeHitMap->GetMap()->begin()                                                              						;
 
 	    //Strip Number X
-	    G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberX")    	;
-	    XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                     ;
-	    X_itr = XHitMap->GetMap()->begin()                                                                    		;
+	    G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberX")    		;
+	    XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                     			;
+	    X_itr = XHitMap->GetMap()->begin()                                                                    						;
 
 	    //Strip Number Y
-	    G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberY")    	;
-	    YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                     ;
-	    Y_itr = YHitMap->GetMap()->begin()                                                                    		;
+	    G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberY")    		;
+	    YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                     			;
+	    Y_itr = YHitMap->GetMap()->begin()                                                                    						;
 
 	    //Interaction Coordinate X
 	    G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordX")    ;
-	    PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID))              ;
-	    Pos_X_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+	    PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID))              			;
+	    Pos_X_itr = PosXHitMap->GetMap()->begin()                                                                   			;
 
 	    //Interaction Coordinate Y
 	    G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordY")    ;
-	    PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID))              ;
-	    Pos_Y_itr = PosYHitMap->GetMap()->begin()                                                                    ;
+	    PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID))             		 	;
+	    Pos_Y_itr = PosYHitMap->GetMap()->begin()                                                                  			  ;
 
 	    //Interaction Coordinate Z
 	    G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordZ")    ;
-	    PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID))              ;
-	    Pos_Z_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+	    PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID))              			;
+	    Pos_Z_itr = PosXHitMap->GetMap()->begin()                                                                    			;
 
 	    //Interaction Coordinate Angle Theta
-	    G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngTheta")    	;
+	    G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngTheta");
 	    AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID))                 	;
-	    Ang_Theta_itr = AngThetaHitMap->GetMap()->begin()                                                                    		;
+	    Ang_Theta_itr = AngThetaHitMap->GetMap()->begin()                                                                    				;
 
 	    //Interaction Coordinate Angle Phi
-	    G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngPhi")    		;	
-	    AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID))						;
-	    Ang_Phi_itr = AngPhiHitMap->GetMap()->begin()																				;			
+	    G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngPhi")   	;	
+	    AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID))											;
+	    Ang_Phi_itr = AngPhiHitMap->GetMap()->begin()																																								;			
 
     // Read the Scorer associate to the SiLi
         //Energy
-        G4int SiLiEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiEnergy")   ;
-        SiLiEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(SiLiEnergyCollectionID))     ;
-        SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin()                                                     ;
-
+        G4int SiLiEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiEnergy")   						;
+        SiLiEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(SiLiEnergyCollectionID))    		 							;
+        SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin()                                                     									;
 
+        G4int SiLiPadNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiPadNbr")   						;
+        SiLiPadNbrHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(SiLiPadNbrCollectionID))    		 							;
+        SiLiPadNbr_itr = SiLiPadNbrHitMap->GetMap()->begin()                                                     									;
+        
     // Read the Scorer associate to the CsI crystal
         //Energy
-        G4int CsIEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsIEnergy")      ;
-        CsIEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIEnergyCollectionID))       ;
-        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()                                                       ;
+        G4int CsIEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsIEnergy")     		  				;
+        CsIEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIEnergyCollectionID))      									;
+        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()                                                       									;
+        
+        G4int CsICristalNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsICristalNbr")     		 	;
+        CsICristalNbrHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsICristalNbrCollectionID))      					;
+        CsICristalNbr_itr = CsICristalNbrHitMap->GetMap()->begin()                                                       					;
+
+
+/////////////////////
 
   	G4int sizeN = DetectorNumberHitMap->entries() 	;
     G4int sizeE = EnergyHitMap->entries() 			;
@@ -1153,39 +1166,48 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 
 					// Si(Li)
 	        SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin() ;
+	        SiLiPadNbr_itr = SiLiPadNbrHitMap->GetMap()->begin() ;
+	        
 	        for (G4int h = 0 ; h < SiLiEnergyHitMap->entries() ; h++) {
 	            G4int SiLiEnergyTrackID =   SiLiEnergy_itr->first  -N ;
 	            G4double SiLiEnergy     = *(SiLiEnergy_itr->second)   ;
 
+							G4int PadNbr = *(SiLiPadNbr_itr->second)   ;
+
 	            if (SiLiEnergyTrackID == NTrackID) {
 	                m_Event->SetMMSiLiEEnergy(RandGauss::shoot(SiLiEnergy, ResoSiLi)) ;
-	                m_Event->SetMMSiLiEPadNbr(1);
-	                m_Event->SetMMSiLiTPadNbr(1);
+	                m_Event->SetMMSiLiEPadNbr(PadNbr);
+	                m_Event->SetMMSiLiTPadNbr(PadNbr);
 	                m_Event->SetMMSiLiTTime(1);
 	                m_Event->SetMMSiLiTDetectorNbr(N);
 	                m_Event->SetMMSiLiEDetectorNbr(N);
 	            }
 
-	            SiLiEnergy_itr++;
+	            SiLiEnergy_itr++	;
+	            SiLiPadNbr_itr++	;
 	        }
 	        
 
 	        // CsI    
-	        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()  ;
+	        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()  				;
+	        CsICristalNbr_itr = CsICristalNbrHitMap->GetMap()->begin()  ;
+	        
 	        for (G4int h = 0 ; h < CsIEnergyHitMap->entries() ; h++) {
-	            G4int CsIEnergyTrackID  =   CsIEnergy_itr->first      -N ;
-	            G4double CsIEnergy      = *(CsIEnergy_itr->second)    ;
-
+	            G4int CsIEnergyTrackID  =   CsIEnergy_itr->first-N ;
+	            G4double CsIEnergy      = *(CsIEnergy_itr->second) ;
+		
+							G4int CristalNumber  = *(CsICristalNbr_itr->second) ;
 	            if (CsIEnergyTrackID == NTrackID) {
 	                m_Event->SetMMCsIEEnergy(RandGauss::shoot(CsIEnergy, ResoCsI*sqrt(CsIEnergy)));
-	                m_Event->SetMMCsIECristalNbr(1);
-	                m_Event->SetMMCsITCristalNbr(1);
+	                m_Event->SetMMCsIECristalNbr(CristalNumber);
+	                m_Event->SetMMCsITCristalNbr(CristalNumber);
 	                m_Event->SetMMCsITTime(1);
 	                m_Event->SetMMCsITDetectorNbr(N);
 	                m_Event->SetMMCsIEDetectorNbr(N);
 	            }
 
-	            CsIEnergy_itr++;
+	            CsIEnergy_itr++			;
+	            CsICristalNbr_itr++	;
 	        }
 
 
@@ -1201,8 +1223,10 @@ void MUST2Array::ReadSensitive(const G4Event* event)
     TimeHitMap     				->clear() ;
     XHitMap        				->clear() ;
     YHitMap        				->clear() ;
-    CsIEnergyHitMap				->clear() ;
     SiLiEnergyHitMap			->clear() ;
+    SiLiPadNbrHitMap			->clear() ;
+    CsIEnergyHitMap				->clear() ;
+    CsICristalNbrHitMap		->clear() ;
     PosXHitMap						->clear() ; 
     PosYHitMap						->clear() ;
     PosZHitMap						->clear() ;
@@ -1247,12 +1271,16 @@ void MUST2Array::InitializeScorers()
 	  	//	SiLi Associate Scorer
 	  	m_SiLiScorer	= new G4MultiFunctionalDetector("MUST2_SiLiScorer")			;
 	    G4VPrimitiveScorer* SiLiEnergy 			= new GENERALSCORERS::PSEnergy("SiLiEnergy","MUST2Telescope", 0) ;
+	    G4VPrimitiveScorer* SiLiPadNbr 			= new PSPadOrCristalNumber("SiLiPadNbr",0,"SiLi") ;
 			m_SiLiScorer->RegisterPrimitive(SiLiEnergy) 							;
+			m_SiLiScorer->RegisterPrimitive(SiLiPadNbr) 							;
 	   
 	    //	CsI Associate Scorer 
 	    m_CsIScorer	= new G4MultiFunctionalDetector("MUST2_CsIScorer")				;
 	    G4VPrimitiveScorer* CsIEnergy 			= new GENERALSCORERS::PSEnergy("CsIEnergy","MUST2Telescope", 0) 	;
+	    G4VPrimitiveScorer* CsICristalNbr 	= new PSPadOrCristalNumber("CsICristalNbr",0,"CsI") ;
 	    m_CsIScorer->RegisterPrimitive(CsIEnergy)								;
+	    m_CsIScorer->RegisterPrimitive(CsICristalNbr)						;
 	    
 	    //	Add All Scorer to the Global Scorer Manager
 	    G4SDManager::GetSDMpointer()->AddNewDetector(m_StripScorer) ;
diff --git a/NPSimulation/src/Must2Scorers.cc b/NPSimulation/src/Must2Scorers.cc
index ea0c60b30..39c58d759 100644
--- a/NPSimulation/src/Must2Scorers.cc
+++ b/NPSimulation/src/Must2Scorers.cc
@@ -171,3 +171,103 @@ void PSStripNumberY::PrintAll()
    G4cout << " PrimitiveScorer " << GetName() << G4endl               ;
    G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
 }
+
+
+
+
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//CsI Cristal / SiLi Pad Number Scorer
+//
+PSPadOrCristalNumber::PSPadOrCristalNumber(G4String name, G4int depth,G4String type)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+				if (type=="SiLi") 	m_type = true  ;
+	else 	if (type=="CsI" ) 	m_type = false ;
+  else G4cout << "Problem in MUST2 Scorer definition: Type should be SiLi or CsI" << G4endl ;
+}
+
+PSPadOrCristalNumber::~PSPadOrCristalNumber()
+{
+   ;
+}
+
+G4bool PSPadOrCristalNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{   
+		std::string name = aStep->GetTrack()->GetVolume()->GetName();
+		std::string nbr ;
+		unsigned int numberOfCharacterInDetectorNumber ;
+		
+		if(m_type)// 24 character before pad number MUST2Telescope4_SiLi_PadXX
+			{
+				numberOfCharacterInDetectorNumber = name.length() - 24 ;
+				for(unsigned int i = 24 ; i < 24 + numberOfCharacterInDetectorNumber ; i++ )
+						nbr += name[i] ; 
+			}
+
+		else // 27 character before cristal number : MUST2Telescope4_CsI_CristalXX
+			{
+				numberOfCharacterInDetectorNumber = name.length() - 27 ;
+				for(unsigned int i = 27 ; i < 27 + numberOfCharacterInDetectorNumber ; i++ )
+						nbr += name[i] ; 
+			}
+
+
+	  double VolumeNumber = atoi( nbr.c_str() );
+
+	 	int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "MUST2Telescope");
+
+		G4double edep = aStep->GetTotalEnergyDeposit();
+		if (edep < 100*keV) return FALSE;
+		G4int  index =  aStep->GetTrack()->GetTrackID();
+		EvtMap->set(index+DetNbr, VolumeNumber);
+		return TRUE;
+}
+
+void PSPadOrCristalNumber::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void PSPadOrCristalNumber::EndOfEvent(G4HCofThisEvent*)
+{
+   ;
+}
+
+void PSPadOrCristalNumber::clear()
+{
+   EvtMap->clear();
+}
+
+void PSPadOrCristalNumber::DrawAll()
+{
+   ;
+}
+
+void PSPadOrCristalNumber::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl ;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl               ;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-- 
GitLab