From 2eb7e764d90eddf9779fe2f4313e5ed9f70fdaf1 Mon Sep 17 00:00:00 2001 From: Kamil Sedlak Date: Wed, 23 Feb 2011 15:22:19 +0000 Subject: [PATCH] 23.2.2010 Kamil Sedlak 1) changed treatment for the odet_timeCFD determination 2) changed definition of odet_timeC and odet_timeD 3) corrected bug in execution time calculation for randomOption 3 4) corrected bug in eventID setting when randomOption=3 --- doc/musrSim.pdf | Bin 237189 -> 238885 bytes doc/musrSim.tex | 19 ++++++-- include/musrScintSD.hh | 8 ++-- src/musrDetectorConstruction.cc | 2 +- src/musrEventAction.cc | 3 +- src/musrPrimaryGeneratorAction.cc | 2 +- src/musrScintSD.cc | 74 ++++++++++++++++++++++-------- 7 files changed, 79 insertions(+), 29 deletions(-) diff --git a/doc/musrSim.pdf b/doc/musrSim.pdf index b9d14612b772a653b5141f40639a3223bdb397e8..8a4c3b9e98974381f923d9c04b347890d0a9ccb7 100644 GIT binary patch delta 23507 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 delta 21816 zcmV(vK&rieEEEh@9xAT?*#s@{QL0jlMnt& z8h`id&rihNFX6vePriF1(@*ZoKM&vDefSK17VqK|opR>x*~=&Sa(RE}b>CX_O{`}dm;U3!4n;01;qa)nt*$cStljFUcga|$yet(pc z309cH$H#jyDI=t{`4-C3TihF|C#&x6m7H9@&5NU$tdQQS!g zPjOegSGv$jX=f{~l#7*CF|5)``WRtfcc+yMdh#-Mw0hm%`SZLGZB^!to<-FZbhMSb zK05%#jB!An=b1sJv_MAuQvui2Kb1w20%yX9`tZZ?UJE@b>kn@-F9&~k2_M3`z3tc& zUQAhdOXq=r_$YrL4JDvx@+pk4eZCJpN1k+5und!;fakCy)O# zd=GjCH|%@-shqr0hqv=j`3=oa0!BW31uWx@iLmz%$9sP{!A(^-eA7NHFTlSYxqE%O zj)yNmUesiLOrnGL6uRD1h{`VMs@L<2zG@%hnxva#kmN<*An`z@I{M)s=gaXmHRwzk z=$*crpZS*~yj&Do(pP$o4+8B7bZmDb6#4#$T&f)EVpFAMn!m>{?+v_^mGbT$ZUmbz z^N;Gbdl!Fjhm{9<7+u~R1+9B?72(I4eogl3`D`dEhbh!z_saPR)%U<*3hYh(3EX)(LPKP z?)lfF(vt(hIPp`5+@KEMf}U2&TSw$)c~khs31)xAYhL3IK_SU__#ZF_MhmA7?`GN* znMx85q=O#HP3$=cGZ*>GMrWKM#I`I(c*CO)*KchZ4sGlmt_)3*4F`Q6(p#tp>Z zb>gN1Fq03xjO7nCD`QQXDoZK3COCMt01{0{kPtLC0W35ystG8AJ@@0D!A*%W`GVOC zLYIH0O7e1JG~|W9ob^}|&`R`ssWRFBaTX_QI!4YV6vy_bEH#sXX8V?3apill-EKxi3DfGX#2h;l$J3JW_G5`=Om z^^gOh`MO=y>mfS{3lIeWRi*2KTxe*{!U2B}dtAWI*eK? zhe|}9H7=5E)Txiy2}$YX5X8Z5@_haDJHbM!s7vM z)Pu)^{CS*Hd%oLyYiIU~c zI#Atznbmar>nF&2(w+VHGL?He%H(WX{N6;6;QK}!J0e`Hb2ZqFID0#wSqy&$MLdN= z9HeNU5wYv#)?nbtn;sdZyLYZwr#1{2DHqfN{tr%MdwTo2xg*U@7|>n77=gPD=NJ-+&B1DlwS(Wg>`XvITsEb==T1D#f@!o%3XY;G*5H^2- zZ*Qk)EW0=YS-#@EWepAkdfPopf{hi@ol|!U!iS0n@UQm32X;N*AQ`~EIZL>^-H3~t zP~R{Gy#Py)px0klqCk~c1eKAMpIPKe5UT8ONP(@0K2)GQP5yj$0!!)?;;cGgMIdQN z8TZPdQjvUP8sn8BQC*L8Itm0G;7i+MdI82mC)v6++f-(1(IcepQ?DzO|10Jhi@!>krFV|<`EQFu! z;zN_8%D|oq7n^^3>4nc&H%Tw45RdWxDsm&denF+ncriukR_$g0N5nYZC@y zUqLysF9bD~d=?08u1oZw=qh zF$*GJZ2n`Rr+V00)3hei@1Jv$xUe5Zd{vAXC|r@c6s+;fohoRxZZ9U(3^+$XvyW0$ zkgQqR;0AwtrjP{<51yJ-wD%@d{$qYy>*B%&au33v`q=UMd_DJc!h0iwdoB7w*A z9`sNn2QR%HppP(fs2@Hpc-EgQtEeRKhM@~E3^mmCnm^Ad75tkj zll^}-CR9!g48^D>pol3QGfWnumcm3yijJaGAr&OGP9bGu}hiM@&m^M+g|1t zF?e(sk<5Jx6{P|LUqRg-lMmpgdv|BObGv2$QAz2D&zaO1jb=j7ags9HG3|#^zs%MJ zbwTw8Rs)H!;X3*1jZ{+>=rWtWLe!Lsl01Kg)Kk4qpc%&wVgr9_7Q_}e1TV+bMPK2P z%GJPhe)d`WxI=)aYK&F`Nht@}UC!dmE~ZZaIa*H>m*y=g#aEo6q%Jwt$OTRO81E@S zAcn$+`k?c`CFkTWKuC$dq#0mbDf|2n_)tlV0JBu66;iTS>PsOf|~!03XWR;#YT z$cMxUcfGrf_Q>N7^IrBV`pfEYudyL)o;I`~s25G`L3_Dyrp%0f_%MDy2oXU~zSvI`NNfkz7%pn}OxRwAFnj(rcwHzx`vY&9KhWZ1XHov3>wCeSi|2n0iGUL+ zAcFlZ0xR&Jd|<=Wrd1JB#y>E$ec`r`8 zZ`W74)K8}z9*P5SVw1X@y6fUU=$~k~y80C>F@lmkvL0N9Ss;6JrLBN{@Pt_xn!Iyw z+6%pCThn8sbj!f|=<^fpC4zs1mBX_#a8WIQnbCG7s9duiwyO*xrN^6E$4cT^5^pt( z7;$F++SP_JMfkSz{*^2IBEJYcdoRLaU91`wQQsENMkxD&t|+(u^}+lRx&s?~IXlA? zNu{iy_iS{zZ>}(~qUcC+lKRw@r!!oODXUh1msv@R5%zBZ%yWO@xj;)YrACR(UPksX zjsuJDOKi7{>bK#j(mOhLN1|{se1uCG-6mZUPl0x z!JUYcf+AZ<_Sb)cV`GO3yh6OS00!2snH4W-0Vwf758U^?v96WRSC-LXEJdw{TFRSV z*Et>Z6s3KCUnB>D%rZg~BV)}5{8C>;*qTZTfM)D$2Cj)-(Dt)5Jwy2}JdvSwm;Wb! zE=mXoY3ynN2uw6s$2oV$N~`Sv8j_2`V7}|(fDKeEy|#a_=)ggRr8bDY82~&{-H20| zfEybhX?HJ1*b3Q$x%%#;maI=(f(sne+>#AAv#&iQ5=qu;uPfKgkE0q+D2+m<_%T#P=zN&|n z!>(Go$Nqnr!aeryQ~Ie1Y8`YV&NF^lnAX?8j+JQ`|7$3bZEnui+DK}%yax{{%pCDO zK1vvqYLG4Xe$n&YiHg|xzp|=;6e4tWTdB-py;-gd54qJ-NHr98=^FLfEZ*>xA{-G{ z`Yn5o%ga~+_ymWH6qm@#I#lAl1TtIj=1|HE)|P*z(E*wC80AHDAPtu+2Iw4PR3{77 zsmfdK0b7*B=Li<%kG+TjsHq0DPEar_6BL+Qs@U1;i4#2x8cCH{g9{9Hy@{zLTy>bE z)>jG3tL$0smZ35HWvK{K0P9HS2pPvvcD$R3vK)jGQ=wW7&orOvjZgJ4OB=)HK^Bu*5%v$Vz;hq9VgoXp>kb5Z4uu@?w5CdoEcA8csYOC9~E+4 z+-+7GTnD`^`Bq92G+-P(@K$G~+nA@^F2r~0p6OA3nu7;MsFQh!VzhE2m|OKl%8;Tn zU!R|Jk&EKjBTV%@nt#K_Ea&$q@kfA-QNM3-6a^q?%UbmiM(Mks_O+u!zx!A_imndV z0=!l`TGHs(w?wfsBiNq!T3>$=vV*yN(guq8aZEtt!=jp&aO*wDj(pIo09F$>n> zz2|C^Y*GL^#$6SG#ej^x!^GZF5uB0pU%-djct?LYM0L4Vs;=sz#wHRjrsFqGS1zqk z&0t_?f2v`_6)0$iYCWj#f+3Z0euIC4tO$8Vt@N?oQ>a&C3%bqiTGD?BwK?k5-pOqO zZKqK$)*jTcs#l=ipU%_PmS9Go9?^d;Y!0LtjOU3up`oNB+ zb?v=AgQ@ap81W6M*?xZ%U$VarjPlPA8rqzTTMDoZH?Q9cFawVuzZT~+p*^@{e~Djm zZxjlF>54~soqdDSk~$5D)z0jzw4}$T+2l*yptIS*!drxieU5MLzI^XfsUBVas?NrV zlPaG^utE62J;wH8_#sNS+}_J{_D6_kl*f+aZFM%-68RYWi^qQ!=wbaA2N*DE)d~b| z4lvYdT5Q43jR6M0)Z3D8#jlX562Ir3F2GPKss3JakS1L2c#xi#3&ILHsl9p{Og{&q zJ6tQoG~BpsBSt6yhD7D^Z(Y1|Q}jAm{4E~46;U75GqjMEK@;TSZ-t$hJg>;fBV@my zFT6F>UMjK1;TeCkdr^uNSjXxf#Wm{M2JO=62D4RK6b}M!S~fKe#f9xTX!Nim7v!6- zSXyn%DxY$D;|vZBUfY|V#283z@jiCOVS6rHI^?=Lyg7n%u0u*amx7@$kx!!#mQ-?4 z5rmZx9R{qDgwU#ugm8G>s>1{ZNqv&WCWYzsY>NHV3aEcv?i6BP251^gfdfat&%6Nz zUVqoF_`Lqb&>N4+k}V6`&te0)#SypHM2YgmI66RP_LjNLN|P*GW!-;b&>O6#Ne3n1 z06*}|e~&i^;NF_DPzTJjx?dWDH)8+&!iZm#rrR&BOznB)x(8;vxPrCN4cIQ@J~ZF) z%4y-TNq>KsG}MR1KpTTy!Xnt((AqV0kBbKj5p8gTY>lFo7Fl>VNVmFG*aDGUo}IVK z7|e64ZmV7=B?^ve%$z2I#6skS9Q0x0BToN0wq5Iq(Ud2-q#*_UiQt&}7t zwX7Gz1S<)Zx4C=S76gY?<+-kQ9tCtthe|CUL5F`z>_*0oHbQMPVTa#nsc`%wxH$k^ zdlibcx_R3oV2V;PDwHA&`{A)d<4@-wwo5**e{nkvPtb8LRz(x4a<*x%I$HddN`9aA zMM?dl@JJ~Fjq!H&5^`@Q!-fw@FtEcf878T)8f`R^}lu(@ea;oA9RX zI~{)J8RMxuXsAr(6J6g~K$wy$bU}VJ zJ3EWRCv&HF1{PMX0gF_u+NEI2u!dA9{y~4UQyKsCy&OftOz2WrRfLfmso;&n=N!@T%t%NV|1Ovyu@@4*p34e!#Fjob|U(<>VvNqfW1z@!=aD1 zJ6e++yY`|Cc-G@_bi?pQ>Q|FEBI8Su*}wUg z`~;o(bl!e|V`84t*Hd{WG^@~q_cNb;xT#+=njVy-`G!C=4@?3RVsU-@lkk1(#F8n81LY!b@*^P z+rvEKM%_)1JJTmwMT3_5j2(ZEg{b6AkRI`1Sz%``YMUcD(`HHkUR=0CcvhPK>1s_r z+h7gl=At;sHd%H8c&bhKd2LJ^n>)(bqJ;h?K!F(E&VVAHuGixyIKfh8c3(&>;pBR+7<2CWN*9Lxxd<@y;&&x7t5usL@ z9HMvFOy*9UB9t1X^y+_^q|BHw@+o`V6;uE0!Z1fP%^nqY>7}EMoabxI*Y^!&0ba;W_x2Z7TE3aC|yjB}LkJmTPz9 zmM02Z^V{scc#DO}p{!M3RO+WY@Kv5y+?`^wo#p^2yYCq$MRUN` zlwj4{COfIC57e_H-JNXthZe9=5j|uymeIrN^KYP60*>Gh&)#^+b z@GPLK9Z`OLFbl3yhNYTShEcQbePe^uk=L*uQQ>ZR4;gd){@xl^#xO;7bqV{nkPP?= zt^Dq5wi3(Zx;0;+CL^gM+X|8mGqKxPCGKd3)0GlyN>qQllvmo0xGTd?A|}8GemVo# z&Q?9wu+q6nuIDF-?57z!e}C{>SC2(l*80*ZDSnI#)3vSY!y5-x6+f69X*(Y8XNBR) zka5eMo{_`9!c{7Q|IF2N&9y`;qM;xh* zDbiDV)Wv@*)u@(9!gpU0o&gj?x1#m-ALW57^cGga>&IE1cYvjRx4a*2-mp_FsDw|W z)%RYJk^+pETWlEHqh~;>bx!vV8>a1*%QNwDmS@p6+irRPTMN2K2Ub}T!o<9ykbLlK zRs_2JF<4Lq2fE3e->^L!uu2NM_doD}E3l(G;1qxDapuRCwB@_AfTTgIji439e1x$@YyE$H}?9n zs!c&dJ|j1(5#x2o-mM04w#0Z8t!W`sBTV1Rc(x~f4nE0$T6lL!Qk6k>Ed2Q`T&{nN z36X-cKg<);KbW6LVut?+@JQH=PWe0okMIonIbRFT4)8-hPA!c`CrQ|yAd~S~dGEbm zi&b%|6Vw}4EjKh+~FFJeyEpV>~Sy0rRENJ{51UVATD8AOS0v7>y5%q1PX z1(FIfTg1JW2fn(uhTYLJ;B>j8`^10Hv=)ydqiCTFqJVQd%E!={^CWKoSp9jD{fUUz z0j#A-=VpK^5w=wj{0vaAQbEg(wB6{=dyONigRf^z>eM{JozlY28D2Du*A|4uY4R5Y z+_1ZD3C6lpDNoHsO1LfHSpDU2V?OiCbrg^}#vNYH8N`1Y6!wo%*|t|E&U0Sdn{X}&}pr7D6SrkeP=EwD!X+@ zoU?#ywHo+LaoQEWp;)6F?|V~8DM>mk*LR7XY|=b6!nfDAp-pmnH58Ce8rB!ox202W z`!?jP><=&X@hl79E({{ZBbS@D;D z90D8zGc+)lo*V*1e?8ffT}P1<^Vs8$X#CXIK_8vkt9Zj;uxD5d2=jpFLGCv446-E4 zl7ZmoC$rY9s;qmvrM`+G2&0a3?x`g!_pQFW+&6K#%`{gg; zzo!@9U5NOT%lyyHx0fG3hMy^S8Ma`h)t8U|a*@6lmqBbne}r)9tlEUVeEjXjpRc|> zNV_Q|&DEQO*t9phzWV-ft+rijFRxx5uFdAP@QvGe5qCi9{SJ2w|>5{WEVHeus7L$}uzmfqJ!Ib_RGizi z6?L4y;Lr-ew_Jttev`0D_*!pb*ERt7VEfLg2tT!N9^i~K!q)+y^Q^soa?o2ayHI&} z?+pDqFGEOq^}J5XoP-pcSHWLC{?*0fkN$l1_;3xAe|dor`6eE!)+(+QQ6U5z7td!m znjppNgW9yVP5_|Fv-DPZ-2SyvYIDZtuYCwA!bbwG82b4)^>dt3`AthvP)^w%xezsB zL2VV!;#+|beUj$!j*Q(tCaZXkt5BQu6mxMx2}c7nwz<x)N! zx)c|WKE?n0`17B^KcD^l^4~5#`Rwv{OI{Q>e^#XQ4!p?VG@Fu%75)Ao4W6UD`Xg*n zie2if-{4=nb0Pf|pS8EYh8;@aGwSMNq<6qI>#sgJT-$9ILMj+h0F%(cUTqQ3IslH4 z1BFwTusD@Sy1+647>N1m!}QSZ1_rp+N&+4ELO;72a2au9hxa|kD1qF})598mfX5Cq zfBfZu{BpOFuBDwJvN0uKWAf^+xLG*ELM;340Qbrd6V8MXdGfWiJ_7n$$iz$uaU*%c zo?H<0=~wWl->d^(^S`(x8B{3S(=g{v`?H~9AtxaxazeT!)JP->8MM-q=IBYV?4u`U zKqv`EHqusP6@+kqQlE0N$80+=N)6C*f1C7smOqaVVh2QWcnE64!8H{ynacw@0ObN3 zmP&MDsfe!+>q~}58(6jrsz}R!=F@hHY@G*PNAejYFCl^FRa#FE5sRPZd9;0hNDkU*5Dwr1EIopq!{_$#ZTQ-0O25a0i6h-#8gbfcmTouJVzjn|)Jc7=h1^0Zn$lIn@cqd>w zN9`#ORLLB=MW{;qZ zKO7^DM!Stfv$Dw|{TqT14ec7w#UDBie1zAR&ceGLavAbP-irdIe}$NcPa6aXX+4?1 zrYIGCegJgcgANO`ggi}aH$qUZJJI7{_cUPs9F&vY0BDLag<~Sg0ZwXI{#S!D0lDt$ z#K{5P#<+qWqp4F29Hb2)Y%_2cyb~B3u+}WsqD{jaB}i^y`bs^pX7~mu)J^t>$ljfm z%~OwPoQSC4)s2Sof64|hyg`Jn%uEg3*THFidBrI+4JVs?|3|eKzdXSAc=Tp8QwzQI z=$7`>p(O$*to3Fs9auu)?oJhsoSxz;&8GZ{Xd?`|S$Lw2cm&#o2)f6kcOu`xOVBX0 zJBI`*A3Ds9PJ}(6RR@4FN~5ZT0vdgYFY>m*^1dCgEV8x#e*jt%4t*R;Z$o)Xd1X3r zFag?3PmumaaDm`Pg=O*^WT;iL%IJoeO&y3|96am;1>7kYK~HW;<0dpf9T?Zj1Rz#( zCSr@j?;s-yiG5m~O2kp!m=_X`vLL*~;C476T#$#s@*09oq(+blKkpnq)JudT1v6+@ z=-kn3cVnJ?fA)Au<;h6syfwgdl%j&A4b^DtmK;)|Egd!DOj{q~k{saZLV`C!ihrqn z7rmtFeON^;g-PrjpHRIrnX$(2miMG(oD<1aktZkLCm;!DRS~IZ$1Dvw+-3wFOU5L; zaa~~4TMfkFR*eBc1i{3JL{jXdJJI=xK}5<(3_=9Ke<;+VH;OZZi2kMIx_A1ayzqlx z4|Vi?AWwH!fQ|jIy_$<1U2k`Al@3na~L?N*A~zn0w)eFH1w0uLkwrtz~ia z-M%}rCv^t}XEj{!L5StA58K9x`Q4{b}n z$Tl~5fBzMC&V&$gMZ!ix9XUPX!3%aKBKj&o67^-URyo$Ymr=)dqCy+xLp$JK!e1^Z z-(hqovZ7rnsUXUlwe4ivF|99K7rne3sEB;uK=NT5iP-L}KFt2Q2a>x?ozf(P=t5}-=N$;&N$TJtDGwx8Fb6wM zc+pB^qK&~grF_^793*i{Nw>pjezu2u%N=)NBZiXK3!gJV5gZ+}CRSlhn6bAuM@xrN zeG@Q^>Z9HPBS~YTt#HE{AkT3nCVOP4e}7jx)VWwyi5K6uZKOsktW~q%{1M*9u8bO7 zkm#(ycM3wTjCYJ9RCbW*C`k)2&_%U)$O+z#Cyea$tEx7=p?hTbJ{QU_&;Si%OuE4# z2`n?WaMePLV>TF(C5_=nm@-8-6p(=-7XO?lL^h|X$DpagC%H4v>So-(VKuH1fBCX^ zOQF-r+ezujG?-J9#B4YaB%4e@8fPzh=|qjJ)44>-#X7p2LM1D^J=-Tw2IkwF0Gxl1 zGvI2blNzK)mzlN7ReF`M9+-zzW}ze9*M4J#*zskI8$&wD#I6iK^%G7LS&)07sE#5g z(T032TJng?eQKg^sfk|z*A>CWf7l!+w@7kf6Hg@RkN;{+1w^?wrveUnfHj>3gJOEm zbp0s*HYFdXFkh6#uAj1r(eg#kG-z=vB2~$sH1t%2{B5!qJP7$8;I#$C?><{?f29;0 z5tE`w zA*iTez^avuNe<GEx$QfP^C>I4sIgyl+20#cA%(Wd3+U^ z6Xn9-c^Z!2DGIXx*T;`1*;aL~<41_)<4;GmM_UTvA5_#!P%MHRh?;ph>UI=)VZp?t zKkhISTBx|!0WJ1qLTWH?f3I)DcRqD4f+dN%@Nbk*p(G&V<(IumMFlvMEIIPDM_!ot{Ji{cg-RXqVU^n_`zF~%! z&?eDb5TKF$29HDAJ$eQ5$LWV4>_Yk>4$Y-oVpePzwpL832yWeZu6lU)N0&XSh-Ffc zG#obFX#g0FLS*G!e}Zo4t(m>XsL9miUh+}a-T|&cukw5`2!Y89tHh!m=5jRtaKf)o zROHFWmgpF!#L9>2NsML$bu_kxT*J=*;HMV%d|()ZjoVap4()`3Qwg?l_KHsxbzbAB zyEaY`9D4;T-o0@)AOV5RpuBYX8z)Ue)`W}(-8t=T#>V5ge`qn!H#m~A7Q+re63egy zLZmaWPdE)&Gv$WzuoKBBctT)ZE|R~JQD=lBQ84nlOZfu4aF`ObRQPdkb{Scd0mP*2 ztlVZk-bv5To@6fpxXB-;v89_7`-ms8gJ0cF@FlE?%wBDIR3Fd{#= zKv~ygCkXVee}EL2cvT-dm`HZ;N1_t6BW8s`bn87jdRLT~XX5C~qp#A-j;)7%HzQlO z!WF(Am7amE;};VpRkq&qe~y%PtQ_;idxsEH9p@?A>~hU9OJcXtWPjM?Ghl++tn*mJ z4!ZDMGvNZ`DVw9vadT48VBuN?C;@4%=*I@s$uG6Bf4H8r75%uVEyFZs%jJh3)=>=pj*qf3QBqcs z-UC<_{~8(%2^d9>HXJx$ph2rMqv7YNY7gYYqReTsy;6Gn9D(orqGtEouI);o8FbSI z%S&F)+592~ClOzH66ngMfX+5Vn76k3NF)|Fe-d_@4&1XWv%9FdyyU*`=wP61)XJLf zGNt6FkWP8{lf$(~060fw&gfQ0m*Qmn$BlACyvPSh258un@Fcyg2@7Ks;vZedl>0E0 z;;`h(4BCa}$K?&#EH?*i&KM%Yw${V)C@Hy$ms>^<)taW!3#DU~-XF9e+yD6@Z|B@AI6-f86%j zlcHl3pd8r13Ugr%ohtQ7Ky&|RL~F?^*NPv2(S_KqcXV!_k00!M6CzH7vpf{mM_+BA zSl@a@{1gXOm;(Q^hStBuAA*r(N!N%KWI(kAUF+f%f9;QsL1{O@pH4za1IvuE_PkKSk~PfeIR+&|OMtqn z?80|@CY?B$>=^4841ScHQ23jqhpyle48r^D@WAE?K|Ulr3Qi^8%5FF7B(E^HWO6ok z(q*kPAQHkw5UC)~2_hj;2?;pOny_{`6V~91F0}~0lZkzeSMJF~1yyUN}HDJWrJuV6;R!dW)?ey8|>X;lQq zUWLs2iA6U6Wt*S_*Q7S zrzeAUxO6+Jz_6e_$SF%+^%iQ&_&-)KfDpXl-t$E|L~x$)*0+(^wj5;6UVkqTVv4~} zq>22bzHWd0VKn{wf>x?a-a|c{>NY8ObXadmsP_y{5X{&f165km7ocicg@`B z3q7cmo3qS9>MF@(MVgis`A0w~PW^#7H7 zGTlD^;h=YH>(+HcVtZNSb(op}XM8MlD!FG<#${#ad5NO6ToR@82BhjtQ1r%MP%Mm8lL{Bt8LR#JYt< zdRc8`%+ki-wQ(y>dZH?`6uuJWd}?cmT!J{;TT{fQeCdYQ6OSY8ETu-pLL}Gas{aWV z4@c%K?^tfpg=Q~s>FrE44V}9Exs2G_=#v8Q>vKkI!A`+ge+^8Nbf4p8MXSZen8EoM z>-FY<`Paox^_x>>U+=-e1JonmL+w9s4_lvrl~scpu0H#=wK6fPUblUuqCS`4af^+i zu=6k0U>6qE7Rx5dv86PG#?iU}TPqmZ>l~>+p=Rl^a+rz1461rkB&^)LQ-dRr+H+h_ zRmue)H7+=Ee;*{8#C$N^`SnEhNun>Aj|#d5&K zu_gCIe{F^@>z`aR{C(fRT)S*3qQ-l$c*Ol0su>?7E`~dXE~PmBFkUZkJYj>&U0(V* z1a{{Vq=qM1^Vr9KDtFE)8nH2(G6Mo)4e^Ehf`XJ_5MAaBr5jW=?*eS zxGHX~%L_qvrNv<1MIIKGt(?1hC@idv-3+J!_W{EuOS-R-|LV%XS?rGYrVIdL#wy7> ze=7q3!VR;S7LHHt5zG(f_{5}o>iE=XckOzXU9*v^P{UPfDZ6qJ$Vzs>YbW&E$*y(4 zXTa>w+pQ_z(6tYVNv+mpK$tdYj$i;Pu%!VF2&Bh0LAN`&K6NZok)X|>A$c~}r^T9H zoCX&Db`C|{<;2?Kh9}-0pT0YDmnk*rf6TDKCbp5e6WF|+iKzqr;Oy%)uuj#l_iatg zRC6^1J7e2k-WaF^en-C}8tCjK@5V zx~7CSX|uYi=RJ!Xl^$`mE_ii7sD+QeIN)U#&UI(hH4KZ_NXT_9cET22S~~f@f1?;z zYk@(-pwO!AI|P(!PQDg{1ik)-1Gp`S{(BsBk8M6;3s}YU*6VSxWfJy1xpH{9l=#_j zN)&QEy9gOhw@LI8s5G&Zr98u0Nnp%!s&2@5CxGo;=JD8qW{lxw+r(^%dA#bZ_8;%t zjHTOF%smVM#6)143P_gi@=AG7f4nedXKR7_PGF_kprNn3%nq1Tqkh09c_h{)L5Wsl z$V4~x)kr@yd~OeAa>|KOZ2;b_);FSHf0SS!xE-=Kv7N@Lo41J9q~SB0O+jxUsl)fQ zrjv(a6&#QIq^f-4*Ra$3YH9JJG{F~&<@VslbRE12ryvus%~1MlRbsAae^2bGtP3yx z;JS(NHESn&St58062iKn8ooB}2qPQPpFVGXoJlS+ZPo@~-4R_lI|ZjSr;Quu=1?yO zWVsh+cW6hNxRo#{HnCEsB%QfnM(enoKvgqxFt>0f1C22!VB-@Oz0&Ki#G(S9%P4m%g zy|bmvh-(rKq=)Vpc38{V_j-O~{J)4H8cpj`Cuq*Ahgf3;HHz5MY-&C{F! zWu>ZWEimrTh$ra_i=^V)tOEgO_=uZ|YaVpdl&KTl_Dfd>5W#ooJsxj@lW*1Lm~CK- zUK&hVU~ZvHnYigT7pG~V(0{c*k?jRg{DYouG)j$WQXh-;O(8||&HXkpbF=A;tbje; zZ!`6H=~`nDt^T;Ne|qMIn^~KdCFoWInHVuZ2(X5(& zMC9lat4mX6O%N<8Xb zLdON=CcZ7AN6Ifqi(u0Fx0PR{TVrhQEm$rn{ieMi7ZS@i-t^z+r+EHeM==IS;n1Or zO%N11adb*?1>Fixovy0xy;~l-oXt+}OeJ+B1c=Yt)1d=${3yc?)0c`5^lHUUYcB2S4ooZJfA)_POgl!4ln8!vP1hszTC3Yk_4 z^}On1MfquFTW)5m(4*?YQn!kCP=^Kc<`gONOV*1_-sfHoqP6GmHMW6WLJryyT|e|t*x>wG8WGTe8+*pSMQe7kMAX#-92 zDlMjSUvA`G!xiy@CLw7);E78LAGOzgDs;SY&@)MQ_sa>2w@-Qz?a$ti*j+za+`lb7WFUQPwN|0TnCg6G zrNbwu0r6%T!SCdX6UjjqIgnbr$TRVDK@0MJFp~^w8`Vr|!L#f~FcJJiDg#ZGWx(?uk)cHf2lE1M^AZKga2W9M{5*328CwwxzX;z&xXH- zE>tIKpINJM2<63Av-GFg)t`>)q-mD@|1bFzxp?Dp-$9KKe>=<0cQMyYljvJXj4Bso z4xYoVw`X)pg^nOGzKyk~L!2SsPt7OT&ZSnS3%T`nP;+UdF{y{Dy=IZ24-^!ve_IfK zx+hv*)vJ-18=?8mc&C^SDyIVTFNb@BOJczH)!8UrbvBZ66LtBqC z^jpDANF9UIcL;dP9XY_#xf$;bpBtx>M1|p!#F4x7ZvIspg9vpocwV!nRDF>M^GcPf z%ExT|by~CALS~o^4q0)lrZ4m*lWZ{L@}YR z@xGbeV?+DgBX|-i$Xq_CjAAnS%MHZ&y4pT|79TFfVY+r|5h-J2ZD}QJmo*5*mqYS6 z$yMV!_i!7LbGed5l5R}7``yL=0Uf0aC}nPBb98cLVQmU!Ze(v_Y6>wmm!3HS2?IDa zIG3t90z`jVOOM<{5Wdf^@XE~3m- z-?zWJk&0?MC}kKi^;eTfQB*?8$GFrWMz=5B)ac@prs0?jDz{WFGcJ=cgf5eedr0`h zzfb;|slA=GTCMf8_q(6>eV_Mo)@lG9#JSveX1{&f^=j|+n-SY8gDl;@@z~c8R(y6= zfa8(9e!V+3DwzUn{r-! zQ)-yB%k})2GyPvSKMFfuF~}q&rrti_+B0*vd?H<$m9lI9+BIXm&aZu(IUzc{qq|YN zc8Qt3!Mc+H9mZd~jJGYds-vt{X>DuEcHX>mwpOM8?;ATVUD*&w-=npz`rhB5ciP2M z-{X$&nwQ_{g7A;!RS#yJSr#~Izpnmw>s<#Z#f$6H2DKV!Tk>l>_MZGX_oR>D-D|zXu>{#Q~jZcbmPnvSa z7MA4KZZ?i>d}9A%_3tfX^s}#;ID}pFf9#-MF{kS4#P5Ey-p@y@xZ<^HtH~|3ZBfS- z>S5aL6+U8gvdOKQyvK7I=LcP}X?1(3zW*j<*gIkNf)^_Hj@Xl}lUI&w%cnE)>RQ6R zVuu`C6SI3pV0+HEWuB$!X`brzz;)X%r+r;HO>sZ1*yUqdnJ-x_s4n$x4p8MrPyFI+ zP)_Ln`d`$|e)dI5_Y~b7?bFOWZDQ>7RpLg2>EUzr%Ej3VRf{rgd&$>r`BQ>RJWrMs zl&5)T-Ocnr_xz*&Glot%r1UB@oK)~f|8N7Ze6_>C%xRZt7F;ksIQ-!0mJoM-bL;x- z)E6EuO*3tRWF?29Uh1ordESQ#-u6qrd^vri|F#(Sn;yH(;};DbcY*Z{zGE}@`B5DU z(VhjK#x}0= zBXGBRVEP#SQi5t)aBo%P#wAz|9$Oe@O>}=baKn6)QZm}x?L@4uEakC@ z{2~e-0Ncmg*j&W4`3>?vTe%x4C+8 zY`D%OTkgrURR7Jz5!%y~RXR2?tcxODKeV7sYxm6CbL;4@G81+yYwpX+H?=H$;dJ5c zyP5~J|JkZP`@UKAl8alsWf?6>GA(WX_61p`EThq$Ls7ivphz1;b0ZTHKz<_<}9cHM@>&aLeU z&&I0?ZsZo!I<1+KacgX6wO*~$(^aF=>y%#3S0dx?&Hc-;#30#xwBzcaA(53^^>j_G znOuiY>eE8#Wm7Nuw6`aS=PkBtNfRn4bwCDX=~e_xYcJqIhWKuZ%JmuwTSCY z#Gdlsjwcib6gb-)jx==p{Mnoq?TAmuq)!eo4QNRzTk9k?8Z=!DQ(7JH+_j7jopACF z7j;{2M!s9});HmCR?_#Xs%n#_;547EQT^9F4>Il4J2lwLd10dZw$aqVVt(8#9UZk# zrRw_IaKA2h-^H(&pBk(jvE`s$w`*fkfNj;g%^j1y-y~E$8Wz8EQ&nog-PYIi-8H#- z&ZA=0Vz8v{c=O+W`>b*fCO_KQdC%m)H!)UEH>}hh<7jzx&j|}v;*Ah`$%PYUqnEWs zH0Qp|R{caemRy(;J^wSKg2juJ<)Tr}uB-oTuHIw3{Ljn*9MeCb;oQ+;C;Iw^uCV;! zyNyrPe}C%E^0LPR))n=0>VCaVUUoQ578po0RfH_^|Exi~G{-gG*Ee>0^Xm2+uYTT9 zXk0O>4ix{Wd!fzoc)T$vn_$oumEhCe{e(L)N&gr=js`QlIbq&2nOKUg`0;aD!&qr# zm`qoy3zaFQ%t%>?l4J=5{DJ3YILx3p1;t4}%#)3%n7Bk{{aTv5Qtnz2942obQjxS$ zo;|{fBuEaBG-a!B@Qj@28Wa;^<2oJ?BuRk3|0KDm${n0(hU3f$&Br{#T%q|5D8P_Z zUyNjEibc+m48aMUbSPEMi?ACpeQyB316n{af@eq+<5&T^OOOP@000h9(0$G4AEu;0 z(VDwrZxFDYz@i6vfkq#u04V_E9AHTf=AzFd6v?s}8HS;H+0(oa<3^GcW{?&DN`@i? z0*NI6G~3(YdwT?h$xT}EUF<}UR#O?w>V#45g+$+dU!$N>T`&$_h;?YDxOdt^jkqk)! zPHM=I^Ue%GAQVW3A!tMn8jQ!S09Xm0lEwT zh58pzD*zA_ss?D8#=T@{8c_}OoTU(^1SN1J4OvO?nQ{veY8)p)GnxavLJg~kr4gk; z5)2+Bh9z+lJgN^EaYE=JVY)+Z;mmLZLIN7+7%T$}$K%EYj*}90XtMGFH829etq2Te z1(1{=b!x1z1cT*~h3&L&KuG8(g#`pQFF{(IrLpn>HL!rgtx%}cNe0lIAhq>a`9PLg z8fVYaJW@o^3d@j^f3}7TBVbHnx5MgyWpRG6!81}rj}?x_Z(v0Z;{rzl8Y>_Og5;T_ z;Ub{T3EmJmj6Da318N2KXhy2hSm8)iP$a{_PKDm!NIWhS1vBlK3+s==@&W4)>km-+ zgn+0Mz~G{s0qh9?Jx7rOS|ac+oFb5E-&V#^Jw@58=AcUyI$TMHf@52<%aij)+y|1* zF@TqfcF0F-!`{M4MR{^-k)ZLouxQc4$5@2L_r9LP5r8HWjyhB(G)rIvX^!hNj5T8$dMBX64#3HS4@Dm41$~$&XiU*G zT(gjK@L_z85S)k#g=BcRq4m8C*9r=K1i%gL{p9T(K^|tH?_G^O9uXeI0QbIJ#a`hT zKG2l}fY*({;lhJ$79kBcRoouL`r3o>Cs~r@P}UH8FOXi|L0JlDSXoNI7F8CGPBbMD ziB)p1^L5(?7m;wPAzE6|*kNP2~`3|7@{ENZu z7Oe<@6wvt#mskdCWpL@lmKlKq$PO$LBm}YLmS9M<+XIN9lL8QMSw`}%!O%28j74`b z4JHU;UylJHP&}dqh|vTRLO=qZL{=9KMj_=12RA_19u4-7!{XoHcwm1R7)H^`a=td6v0>L4gftWz{dLt$( zXyKxeD8+;c=2BIm+{WqkwXp|pp3A5@_jAUSqDvi)wl)~zub4Pd5gij06|*8LWWGYf O5YP&1Yq#m{ivIxv85Rrx diff --git a/doc/musrSim.tex b/doc/musrSim.tex index 163a6df..5a4f289 100644 --- a/doc/musrSim.tex +++ b/doc/musrSim.tex @@ -1177,13 +1177,24 @@ The list of variables that can be stored in the Root tree: the photon enters (and not \emph{from} which it comes). This e.g.\ allows one to attach more APDs to one scintillator, in which case odet\_ID[] will correspond to the volume IDs of individual APDs. \item{\bf odet\_nPhot[odet\_n]} (array of Int\_t) -- number of photons detected in the given optical photon signal. -\item{\bf odet\_timeFirst[odet\_n], odet\_timeLast[odet\_n]} (array of Int\_t) +\item{\bf odet\_timeFirst[odet\_n], odet\_timeLast[odet\_n]} (array of Double\_t) -- times, when the the first and last photons contributing to the given signal were detected (odet\_timeFirst and odet\_timeLast). -\item{\bf odet\_timeA[odet\_n], odet\_timeB[odet\_n], odet\_timeC[odet\_n], odet\_timeD[odet\_n], odet\_timeE[odet\_n]} (array of Int\_t) +\item{\bf odet\_timeA[odet\_n], odet\_timeB[odet\_n]} (array of Double\_t) -- time, when the $n^{th}$ photon was detected, where $n$ for \emph{odet\_timeA[i]} is given as \emph{OPSA\_fracA} - multiplied by \emph{odet\_nPhot[i]}. Similary for \emph{odet\_timeB[i]}, ..., \emph{odet\_timeE[i]}. - The variables \emph{OPSA\_fracA}, ..., \emph{OPSA\_fracE}, are defined by ``/musr/command OPSA photonFractions'' command + multiplied by \emph{odet\_nPhot[i]}. Similary for \emph{odet\_timeB[i]}. + The variables \emph{OPSA\_fracA} and \emph{OPSA\_fracB} are defined by the ``/musr/command OPSA photonFractions'' command (see chapter~\ref{sec:opticalPhotons}). +\item{\bf odet\_timeC[odet\_n]} (array of Double\_t) + -- time, when the shape of the signal becomes larger than the threshold ``OPSA\_C\_threshold'' defined by + the ``/musr/command OPSA photonFractions'' command (see chapter~\ref{sec:opticalPhotons}). +\item{\bf odet\_timeD[odet\_n]} (array of Double\_t) + -- time, when the shape of the {\bf normalised} signal becomes larger than the threshold ``OPSA\_D\_threshold'' defined by + the ``/musr/command OPSA photonFractions'' command (see chapter~\ref{sec:opticalPhotons}). The normalisation is done + to 1. +\item{\bf odet\_timeCFD[odet\_n]} (array of Double\_t) + -- time as from the ``Constant Fraction Discriminator''. +\item{\bf odet\_timeMean[odet\_n]} (array of Double\_t) + -- mean time of the arriving photons (calculated from the OPSAhist defined by the command ``/musr/command OPSA OPSAhist ''. \item{\bf save\_n} (Int\_t) -- number of special kind of ``save'' volume that were hit in this event. The ``save volume'' is any volume whose name starts with letters ``save''. Their purpose in the simulation is usually to check positions and momenta of particles at some position of the detector, even if the particle does not deposit any energy in diff --git a/include/musrScintSD.hh b/include/musrScintSD.hh index b9973c3..8445b88 100644 --- a/include/musrScintSD.hh +++ b/include/musrScintSD.hh @@ -78,8 +78,8 @@ class musrScintSD : public G4VSensitiveDetector // Optical Photon Signal Analysis (OPSA) void Set_OPSA_minNrOfDetectedPhotons(G4int val) {OPSA_minNrOfDetectedPhotons=val;} void Set_OPSA_SignalSeparationTime(G4double val) {OPSA_signalSeparationTime=val;} - void Set_OPSA_frac(G4double a, G4double b, G4double c, G4double d) - {OPSA_fracA=a; OPSA_fracB=b; OPSA_fracC=c; OPSA_fracD=d;} + void Set_OPSA_variables(G4double a, G4double b, G4double c, G4double d) + {OPSA_fracA=a; OPSA_fracB=b; OPSA_C_threshold=c; OPSA_D_threshold=d;} void Set_OPSA_CFD(G4double a1, G4double delay, G4double timeShiftOffset) {OPSA_CFD_a1=a1; OPSA_CFD_delay=delay; OPSA_CFD_timeShiftOffset = timeShiftOffset;} void AddEventIDToMultimapOfEventIDsForOPSAhistos (G4int ev_ID, G4int detector_ID) { @@ -115,8 +115,8 @@ class musrScintSD : public G4VSensitiveDetector G4double OPSA_signalSeparationTime; G4double OPSA_fracA; G4double OPSA_fracB; - G4double OPSA_fracC; - G4double OPSA_fracD; + G4double OPSA_C_threshold; + G4double OPSA_D_threshold; typedef std::multimap OPSA_signal_MapType; OPSA_signal_MapType OPSA_signal_Map; diff --git a/src/musrDetectorConstruction.cc b/src/musrDetectorConstruction.cc index bad9019..5a1bafe 100644 --- a/src/musrDetectorConstruction.cc +++ b/src/musrDetectorConstruction.cc @@ -713,7 +713,7 @@ G4VPhysicalVolume* musrDetectorConstruction::Construct() { else if (strcmp(varName,"photonFractions")==0) { double a, b, c, d; sscanf(&line[0],"%*s %*s %*s %lf %lf %lf %lf",&a, &b, &c, &d); - myMusrScintSD -> Set_OPSA_frac(a,b,c,d); + myMusrScintSD -> Set_OPSA_variables(a,b,c,d); } else if (strcmp(varName,"eventsForOPSAhistos")==0) { int i_eventID, i_detectorID; diff --git a/src/musrEventAction.cc b/src/musrEventAction.cc index 28cfb21..6a1dce2 100644 --- a/src/musrEventAction.cc +++ b/src/musrEventAction.cc @@ -46,6 +46,7 @@ G4double musrEventAction::maximumRunTimeAllowed=85000; musrEventAction::musrEventAction() { pointer=this; + timeOfRunStart = -1000; } musrEventAction* musrEventAction::pointer=0; musrEventAction* musrEventAction::GetInstance() { @@ -97,7 +98,7 @@ void musrEventAction::EndOfEventAction(const G4Event* evt) { // periodic printing // // if (thisEventNr != 0 and thisEventNr%10000 == 0) { - if (thisEventNr == 0) timeOfRunStart=time(0); + if (timeOfRunStart == -1000) timeOfRunStart=time(0); // initiate the time when execution starts once at the beginning of run if ((time(0)-timeOfRunStart)>maximumRunTimeAllowed) { // Stop the execution of the run - the run took already too long time char eMessage[200]; diff --git a/src/musrPrimaryGeneratorAction.cc b/src/musrPrimaryGeneratorAction.cc index b8880dc..065bbd1 100644 --- a/src/musrPrimaryGeneratorAction.cc +++ b/src/musrPrimaryGeneratorAction.cc @@ -492,11 +492,11 @@ void musrPrimaryGeneratorAction::SetOrReadTheRandomNumberSeeds(G4Event* anEvent) if (!pointerToSeedVector->empty()) { eventID = pointerToSeedVector->back(); pointerToSeedVector->pop_back(); - anEvent -> SetEventID(eventID); } else { eventID = ++lastEventID_in_pointerToSeedVector; } + anEvent -> SetEventID(eventID); CLHEP::HepRandom::setTheSeed(eventID); CLHEP::RandGauss::setFlag(false); // G4cout <<"musrPrimaryGeneratorAction.cc: seed will be set to="<< eventID<Fill(timePhot-OPSA_timeFirst+0.00000000001); + if ((boolStoreThisOPSAhist)||(bool_pulseShapeExists)) { + G4double tt = timePhot-OPSA_timeFirst+0.00000000001; + OPSAhisto->Fill(tt); + if (bool_pulseShapeExists) { // fill contribution of this detected photon to the overall signal shape + Int_t iBin = int(tt/OPSAhistoBinWidth); + Double_t rest = tt - iBin*OPSAhistoBinWidth; + for (Int_t iBinNew=0; iBinNew=iPSmax-1) break; // out of the pulse shape info ==> leave this loop + OPSAshape->Fill((iBin+iBinNew+0.5)*OPSAhistoBinWidth,pulseShapeArray[iPS]); + } + } + } if (bool_StoreThisOPSAhistSUMMED) { OPSAhistoSUM ->Fill(timePhot-OPSA_timeFirst+0.00000000001); OPSAhistoSUM0->Fill(timePhot+0.00000000001); @@ -657,16 +666,18 @@ void musrScintSD::EndOfEvent_OptiacalPhotons() { // if required, convert the histogram with photon times to histogram of electronic pulse shape if (bool_pulseShapeExists) { - for (Int_t iBin=1; iBin<=OPSAhistoNbin; iBin++) { // loop over all bins of photon histogram - Double_t photonCount = OPSAhisto ->GetBinContent(iBin); - if (photonCount==0.) break; //nothing to be done for bins without any photons - for (Int_t iBinNew=0; iBinNew<(OPSAhistoNbin-iBin); iBinNew++) { // loop over all bins from the actual one to the end - Int_t iPS = int( (double(iBinNew)+0.5)*OPSAhistoBinWidth1000 ); - if (iPS>=iPSmax-1) break; // out of the pulse shape info ==> leave this loop - // OPSAshape->AddBinContent(iBin+iBinNew,photonCount*pulseShapeArray[iPS]*OPSAhistoBinWidth); // iPS corresponds to time in picoseconds - OPSAshape->Fill((iBin+iBinNew-0.5)*OPSAhistoBinWidth,photonCount*pulseShapeArray[iPS]*OPSAhistoBinWidth); - } - } + // for (Int_t iBin=1; iBin<=OPSAhistoNbin; iBin++) { // loop over all bins of photon histogram + // Double_t photonCount = OPSAhisto ->GetBinContent(iBin); + // // if (photonCount==0.) break; //nothing to be done for bins without any photons + // here was error - instead of continue I used break !!! + // if (photonCount==0.) continue; //nothing to be done for bins without any photons + // for (Int_t iBinNew=0; iBinNew<(OPSAhistoNbin-iBin); iBinNew++) { // loop over all bins from the actual one to the end + // Int_t iPS = int( (double(iBinNew)+0.5)*OPSAhistoBinWidth1000 ); + // if (iPS>=iPSmax-1) break; // out of the pulse shape info ==> leave this loop + // // OPSAshape->AddBinContent(iBin+iBinNew,photonCount*pulseShapeArray[iPS]*OPSAhistoBinWidth); // iPS corresponds to time in picoseconds + // OPSAshape->Fill((iBin+iBinNew-0.5)*OPSAhistoBinWidth,photonCount*pulseShapeArray[iPS]*OPSAhistoBinWidth); + // } + // } if (boolStoreThisOPSAhist) OPSAshape -> Write(); // Now fill the histogram with the CFD signal @@ -696,7 +707,34 @@ void musrScintSD::EndOfEvent_OptiacalPhotons() { OPSA_CFD_time += OPSA_timeFirst - OPSA_CFD_delay + OPSA_CFD_timeShiftOffset; // correct for } } - // G4cout<<" OPSA_CFD_time = "<< OPSA_CFD_time<<" OPSA_CFD_ampl="<GetMaximum()); // covert relative "OPSA_D_threshold" into + // the absolute threshold using signal amplitude + for (Int_t iBin=1; iBin<=OPSAhistoNbin; iBin++) { // loop over all bins of CFD histogram + Double_t xValue = (iBin-0.5)*OPSAhistoBinWidth; + oldYvalue = yValue; + yValue = OPSAshape->GetBinContent(iBin); + if ( (yValue>=OPSA_C_threshold) && (!OPSA_C_time_found) ) { // signal just moved above the threshold + OPSA_C_time_found = true; + OPSA_timeC = xValue - (yValue-OPSA_C_threshold)/(yValue-oldYvalue)*OPSAhistoBinWidth; //linear interpolation + OPSA_timeC += OPSA_timeFirst; + } + + if ( (yValue>=D_threshold) && (!OPSA_D_time_found) ) { // signal just moved above the threshold + OPSA_D_time_found = true; + OPSA_timeD = xValue - (yValue-D_threshold)/(yValue-oldYvalue)*OPSAhistoBinWidth; //linear interpolation + OPSA_timeD += OPSA_timeFirst; + } + + if (OPSA_C_time_found && OPSA_D_time_found) break; // times C and D found, no need to continue looping. + } + + // G4cout<<" OPSA_CFD_time = "<< OPSA_CFD_time<<", OPSA_CFD_ampl="<