From 2bf4d9d68aa9687e8ab2d65f0568fd82f79e9185 Mon Sep 17 00:00:00 2001 From: rpreghen Date: Sun, 14 Feb 2010 23:15:54 +0000 Subject: [PATCH] software update to include time corrections during reconstruction. time corrections added are: - DeltaBC (from raw data) - L0L1Latency (from raw data) - CTPLatency (from config stored OCDB) - TDCLatencyWindow (from config stored in OCDB) - T0Fill (from PreProcessor measurement stored in OCDB) added files to local OCDB for simulation - DeltaBCOffset (set to 0) - CTPLatency (set to 0) - T0Fill (set to 0) modified local OCDB Status object to include TDCLatencyWindow (set to 0) --- .../CTPLatency/Run0_999999999_v0_s0.root | Bin 0 -> 2293 bytes .../DeltaBCOffset/Run0_999999999_v0_s0.root | Bin 0 -> 2301 bytes .../Calib/Status/Run0_999999999_v0_s1.root | Bin 0 -> 5864 bytes .../Calib/T0Fill/Run0_999999999_v0_s0.root | Bin 0 -> 2267 bytes TOF/AliTOFCTPLatency.cxx | 75 ++++++ TOF/AliTOFCTPLatency.h | 40 ++++ TOF/AliTOFChannelOnlineStatusArray.cxx | 4 +- TOF/AliTOFClusterFinder.cxx | 67 +++++- TOF/AliTOFDRMStatusHeader3.h | 31 +++ TOF/AliTOFDecoder.cxx | 19 +- TOF/AliTOFDeltaBCOffset.cxx | 75 ++++++ TOF/AliTOFDeltaBCOffset.h | 40 ++++ TOF/AliTOFGeometry.cxx | 1 + TOF/AliTOFGeometry.h | 2 + TOF/AliTOFHitData.cxx | 3 + TOF/AliTOFHitData.h | 5 +- TOF/AliTOFRawDataFormat.h | 1 + TOF/AliTOFRawStream.cxx | 11 +- TOF/AliTOFReconstructor.cxx | 5 + TOF/AliTOFT0Fill.cxx | 75 ++++++ TOF/AliTOFT0Fill.h | 40 ++++ TOF/AliTOFcalib.cxx | 214 +++++++++++++++++- TOF/AliTOFcalib.h | 24 +- TOF/AliTOFcluster.cxx | 12 +- TOF/AliTOFcluster.h | 8 +- TOF/AliTOFrawData.cxx | 22 +- TOF/AliTOFrawData.h | 15 +- TOF/MakeCDBEntryCTPLatency.C | 21 ++ TOF/MakeCDBEntryDeltaBCOffset.C | 21 ++ TOF/MakeCDBEntryT0Fill.C | 21 ++ TOF/TOFbaseLinkDef.h | 3 + TOF/libTOFbase.pkg | 3 + 32 files changed, 824 insertions(+), 34 deletions(-) create mode 100644 OCDB/TOF/Calib/CTPLatency/Run0_999999999_v0_s0.root create mode 100644 OCDB/TOF/Calib/DeltaBCOffset/Run0_999999999_v0_s0.root create mode 100644 OCDB/TOF/Calib/Status/Run0_999999999_v0_s1.root create mode 100644 OCDB/TOF/Calib/T0Fill/Run0_999999999_v0_s0.root create mode 100644 TOF/AliTOFCTPLatency.cxx create mode 100644 TOF/AliTOFCTPLatency.h create mode 100644 TOF/AliTOFDRMStatusHeader3.h create mode 100644 TOF/AliTOFDeltaBCOffset.cxx create mode 100644 TOF/AliTOFDeltaBCOffset.h create mode 100644 TOF/AliTOFT0Fill.cxx create mode 100644 TOF/AliTOFT0Fill.h create mode 100644 TOF/MakeCDBEntryCTPLatency.C create mode 100644 TOF/MakeCDBEntryDeltaBCOffset.C create mode 100644 TOF/MakeCDBEntryT0Fill.C diff --git a/OCDB/TOF/Calib/CTPLatency/Run0_999999999_v0_s0.root b/OCDB/TOF/Calib/CTPLatency/Run0_999999999_v0_s0.root new file mode 100644 index 0000000000000000000000000000000000000000..91dee6853f3dfe4dfe67ec74f785a7c0dfb4c15c GIT binary patch literal 2293 zcmcImXHb*b8va5JMd>VyN)3dfgw7JmQlv;nA`n1`K!8Y10-+Z{K_JpwKw|`H!Xhn; zURb0k=v@J+F1=iY1%<34UEqFX=g!=J_uiSiXXc&r&Ufa0zUMh}=6zm5XlOV9415Ow zfG+?*x50=3^H?w-VDzy4nXuRc0DB4m>6i>8iPa0tCqY;MAhDAHp8i+s7&ryGr(e3~ z4B(l_;NL(;Cq#qjjkp>SqUxplujNHj^&+aOoK^z=cR+yslsS_<0MvlQd%$2S007RB|9CAM zr|KavX1&I#dWiRFJ&$n^4pe6r5>ANz_Z)Dufi?jE3<5+!h!_kCgJCm~!mxOAa&Qcs z7%i0Kf4{_7IWM@7@0wRy?7@}CpQPx^p~ME^ql6u|6tH}c`FVuE%n#sX~XL z!`PiGqm1K_<#;QB40-Vat_Q7pyAJDgg$466PVDM*xG-iA1eZ-|JS9(H8> zfKGFsBTFPdp7kB4(~(=tyaFN)*%y88R8GlRVzPyIApLI2)D3fee!ZIf)Sc#;?zPSf zu1%j_8eUuu;Ef1)11n1~hG*2S;m_3xMqL|u*I?OUm^JD=`8KRuRk`@??^XSM!ts!q^Dbk?v;d72~k{-YmTZG`oQCNsLOufI|mmOmh> zn>=(D@M|1Cm?AWJqSa(JwRZ!yS6jS{9zk!tXxu#aHSwKM*iC+ZJ4pOjp#vYNMZ5LX zYLdF8X}h9wj0qhx^F(a;9$wP6XzBLzq=W!n z0nQfJ$Nh@3V|9wXsBLuJ6uvHXdTEmOk7gq>&3*YpMUCmNwPICmu4$Zt59^BbD^0NV z5x#dep65^F`99#rWRLVcNsHJT9l>pvE4?nZg4^{^4E@KE_t+LM|Ay0tzJ4E%%O(zx z+-0N;3up|hcg@@}BW`LvHKNhChL?B}y4r%D3N@=zF`Yh|x@8gjc2qjc^jnSoKyf=N z<-yO0r8q9F6lAMSMw#-Q*+E?cdF!jc`ru*t<HN*{TvFzmzhX zxBi*`&824qo~KXTOIn@xv?EpSNBZ`AM|J8A#k9vzt}Bad)q5%q4h@~S>}9GQmnVBE zH9|#K(ZgY%%&F2xZksiGZ9<3h#XAhE!(zUslcn<3lk$wA3W<-=E5!V?+{N2>Z}yTT zlhV!e2Hr2*trOt!lNVJ+BT8=C1!qoV?U?^!y%s06FLD-~nN}+^$JlMa zQXFsPSk&6Lt7|z)z8TZ6ARxo8j=*0yC&DPy+B5YgF;x>BqfW~Vwd!h0Si}R(2LVU( z9@w9-dQjQ>d!t2Ss%v7Y?kVQF{bgKP2V`XRm%?0&CrS9QRtcIfLy}{x(tUQXaYlSS zcP=)2b1wEsyC9R5C{XwEmafk4xhIQV9fiJiwxxDs1rlf!rSysf!;D|Vv+v5j<+qF< zC7Y{C^46?nJ=BxdV6@(b5mCce?vld<4{b)m%iAjBqsKdOJQjiDTjk4& z(g|l@!u6u;$=*ejg<9OWzjL2b%!YPCy4~kl1yxs#V{V-00jd47-U!^bKatYEe*$^P Bua^J- literal 0 HcmV?d00001 diff --git a/OCDB/TOF/Calib/DeltaBCOffset/Run0_999999999_v0_s0.root b/OCDB/TOF/Calib/DeltaBCOffset/Run0_999999999_v0_s0.root new file mode 100644 index 0000000000000000000000000000000000000000..6d8cce0f2213b92a03bf112fedbe349410a021bb GIT binary patch literal 2301 zcmcImXH=6}8va5bKso|aq%4a8OoAXqIte|1AqWUc2?Uc+f=NVriIAZQQXHCeI0Fc% zl$j9*SV0t&k%THuiqd635OFE8AK9~K_uuaR@SgLW`=0MR?|Yx;J@>rNrI5)q0Qf@+ z004gg;5z~l2gb1=ARzj<{uyv!0f0LJfRG+6m`K-)&c;JH03fb&6a4$XEC?5HQs|yh z;oftA#;y#W29|WOA_n1|;RJFp9_|}Nq>=+@Cp!gX1*cJNg#^N#kSGhdi<1=`34X`H zQTQO5uLaU6Ab^Ue!JTh~AiNF!wYJLHmfne(Z0N#=R z+MM;19zbC19%!HR075v)7cdVZf*LJDXq1Tmi~$cc-y;BkL4a@w)yHQ9=fh>8=)-~I z<>4tlHk-@Oky+SW$}YrauYCAe`jhJe4~}f{_*y(q9XEuRhoPJ=?b0QG!CQ`y+DXMZ z24tJ0`VN@gbbYK3Pt{lHLy7u}oBiTGc?yzoSb!ra?;XVGWiJ%2t>Qj2LS+; zhNhP6n*vG|PGq;r>_qCx{Q>;BUC=}-O%O|?;C+Mf6x)yhvKWed3l|ij7(@&S#QTFA zl?Lk8=LQmmLEXJ>4rEzN>DUfOx%LpTvUrcywh-xD2e2A8Y?E;6S1+mmUS-@CFvHDJPU~NeuMC4oF5!$%({1a}HYEVz`G{Yh^B56&>KmxA~gAF&=7{?krM}Vrk7g8P_!> zVeREz$aftBd-?W0s|<H z7K1zMV(Asuu&Y5$(9`MCZItYEi{Stz{j{htUHwS#C_(kgmeCDkuG=YjQK-O`ogrkY zv#8^I+3qWg6vJ}NIaf`MIi;hD;s}8YNmA22V`SE`<-sAghr?G2VPjfp%9HsyswxIj zb83iLIOGnmdxgHr8Tmk0r6FH!6sMh}9QZaQG=XpOFwH3=Z{~8-&qu7BkHjv!FA8pu z+t*XRT|0ycXO*E3AnWD@VK+?iP)+@SS7VX6UomQRS&T4S=P-{^pJ@->?xOedIx?yB zW##?yMbwA4xEzI~Op!+nVQlY>deV5qnUJ&_hmEhJwdg^jm6;Vn=dq&bxMm@N=P%qY zMpz`-d1@q!Oi|TzD;2sk3HW3^+^2Dy9ybTE-E?)6z|pq5((@>0un}LM9w!tqcoXK? ztz`03*`__Si9d44Lx=wObYv%Mfhu20p7hf5G1qx^DTDPP=*6O^!Ps`N_Di`(M16yR zuqpZZ#hn`BNIBkO8pncWd+$}1s+s1+n#`%Dj;=mw?-KBsU$qrCoLlXeJur^p5XhJq zHeJK4*%uSibXtD>OCGuInpH`Oc0}?zYo{PILTXR12-=IKR@3|XsI5Ze)Mqw=9G~xe z6FGN^}Y0{Ucn(O20+}`dwYrR~1-8(Tcam;Uec79p%&^aNA zssA#S;ipFtoFAuH_jbvzAD55Bd9HPZ#(&G(c0RUOHxWLlUv~eo$cXQhTD+U=F9!fx zXMxZOb8^m8lSvM^`J~b83YCIw3HwcZt%E;mM|x2{rAZybqu_V7tbQ_MLMNI^(NIX| zPt>=I9!rC5Ir$Sxum&@E(ADADI@2t{!RP8>N=D-MkLIBZd-*-X=}+6t3msdwofXOY+}u_pAu7JxlcB2 zi#onLB?1!*P-sVW|NeMZ`54*#yQK9)heF4Z+|&IJ(Z&*{AJP=nf1{%#)FWA?!tPjf z|5mjqOy+MiKc+76E6J9b=fcc!z0WH@c8pG2|#TKm1 zqnkSRo}VKXXqB9C$Ppr_JGx!XSlbHS$<}4;RS_K@n57~aJ#~#3J uzXkn?J%GQL--6Xo-V6V)$AKxaY^wbKrpkVRfL`(4sDecKj&5Jf1^xl!imzY* literal 0 HcmV?d00001 diff --git a/OCDB/TOF/Calib/Status/Run0_999999999_v0_s1.root b/OCDB/TOF/Calib/Status/Run0_999999999_v0_s1.root new file mode 100644 index 0000000000000000000000000000000000000000..2b9975a595e4520481fafdb38c5e4d77dbbd945a GIT binary patch literal 5864 zcmeHLdoptj zBNJjGuVO0H=)uIqoFVVmaewBnyYBt(-n&+RoImEf)?VMezH9CM{p|1BpZ#5XhhnjK z0O*kg0KgjnWF|ntfjSWs0Z^zy|5SEx0RS=r2vp=kD|WR@eTo&>0st{I@brIM3&5tM zB;&gWmw;fNXYe-ArK6R9kdF<_4;$vl4gk_U|Lr*> zGQg;}0lqwY-OZ>4(3|$+$AkRAs7{37LnHrF2hgWQ&q)Bjz_thh&g+%{hMBy`XXJ10 zhaTp+u;mzyS!L=?o$-eea|Xft<+5+2J?Nk%W5-bC8&k@2+oL8HYibbJ~3SvrJ=%UAp}>ge7JX{yC}a z)nIP)x^U?EL&I>SsW_X;dSvs03cb?NgzU?-Q_%1?!+%9=MFw*)*u_UGR#kYjB2sI zlTW+M91Kyl@!vZXVsSUKYN7Yo`EnwYiPO4}Dj5yLMF@z!aZxEWF>lwvu8H1?_^dE3 zsP?J5A|1D<7^m8LO1IkRP7e11Eeu01d|^7UD^)UCNsf$5Pcd3N6W}BjTH5|1jVqM! z2CH@nib!P#9N(IL@SAbnneN=#6ZOYiOotS-4dP3VFoanvsSWTNgR!r5>b14ossWN0 zl(16u!?}$$p;PqQJ>Q`Q#{QkXC!Do?MifKc?yQ~_sCj0;CHW+?Hs#y+qj9*P&RK?t zJeMk2Py2kIoM$CGOtOyO9}P8}`8Z?i+Fjtlh*M1$jeez)Y&%dL{4Arb^j2KB`Rb6V0LXP?;SV`QoM9tQ+D(zUDFZg1h+#54x1O-?QQ z5K|v`rHr6U1_N>t8CL@2f>}MPI&h_hZ{o+I=;|j}`nlKBw4t-0-$dS9wz%v z5H&}a6{j;HLB2IqOPh%XFF(7J5i;@bUX6=uWOBnQr><1=m9|3vPCN9I<|?EJic-L7VrxP^>^7fkAZb7U?qISf@bdwN~dwV~fxYY+;y za20Mzp=#*9w5GYr46d!NHWfo&T=%}%E71b~Q%(0l7TNH9(u6d_Z9Nm&W^^sds*Emp zPiO*0)r*o^FZRwWSKnt^`QcK3PMy%AoE)hFD-w9e3^pJb1g{9HBH~m=|N2f(S#{I? z6X}-LGhOg}JSH1rn3g)T^P5cwbEx+)TWR-SqKx&g@1UWru-LM+xP|y9EEHAvQg6Jf zGkw_a$u9@*4NQn+3gUEbk-8089h`aci#blUUD2qE=JU>K&zHXU*IGw(DiJr1Rh_28 zo7xW;zfLW%d_T5(@1fBPR?av<)22O(gT~jWb=g&EoXT6C)?uBBQ~Q|-C=O$1f}lh3 zUvR}w^N@YLkoQD^PzKJi z?2^C_ITU(AG-lPk%EoQKOw?x*7$y4BVjy2ngp5vAjhO6Opn%RO*Dy$IA~k<9KHgAqMka$6EjuWdr%9zS ztIStlqkm{?N`Cbl>#Eq=bGy&cZ{OQs>S0v>c#Pv!RcXq8lIyi;d3Ed#``yo1bU9c_beVZjwsV%^A+#h^K)$zk#jftE4isU zEX7*qcrz6jvE}--=RuPu+9~Mp_~PqMx#-=+k~QdvvvxlSQs^?NjT3tJmftnbAfDJJ zCK1c~C-s@woxSF}n!Q?CZ^9^~j@D6?a0Sw33RS{=n$x2mn?-CccqrKA$BBRYAV#3? zV2cV^#|wFb)+4;?&KtCXV@h6i|LKEP&@K3R{NFQ9(2U5#xb@!{c_U}=2m1LKL4-0B IM13;w4{j2urT_o{ literal 0 HcmV?d00001 diff --git a/OCDB/TOF/Calib/T0Fill/Run0_999999999_v0_s0.root b/OCDB/TOF/Calib/T0Fill/Run0_999999999_v0_s0.root new file mode 100644 index 0000000000000000000000000000000000000000..08e961c2f2d73b11dd5e811c0bc78187a40c6138 GIT binary patch literal 2267 zcmb_ecTm$?8vP|g$kHOA2UdDfkOTn<0{iF~q=q8pK>{R54~9^pQWOLMMIln66eS=? z5mbC29cfRHClAm!fPz#3i40X9irHWCW@q=m-JS8yeDmG8cg}auxpU_`mr9|~0AN@e z000sIz^A|fGY|&`1dJBGza~&i0N_smAalj{b!6?uW|ARL07&Xs2Y3Icu?uhuWtbE_ zWCIbr%G^@`em9$taPk>+FeQSF_74w1ycV6aobGoRcNByI^8OKBm%@ zS^?6domvLRTpy14Sdnjx!H~@VzOXj8aMwF`IoC56K8g|^6Qm*$Pg1U?Y%=g!cAJvW zO#GN0ehVK>MP3e-k!e;ssTC|C5q1iLfuFz}8U~<2x9CIwkfEQz@?Hig6hYw$HRB59 zz88SR?`9toO%rydQOW)hWGXH)h=R1D!~}%X6~jX!!^k8sMbkjl`uqR|0jlmhJ4BJQ zmf^HH2DIW((@<0|TreUh&sI#jL~iN^>1c@ZltZv9>g}{w+|Y%%*4E!F?*)i%C-cog zk;t>El=xO=pD64Of+cU2oF(x##=j>8*mL9X1eT=&CTHNrqdC ziwqVzPPPkZ-nbwU#p+3^4x^_|)N9s@o2D#MEv2#sq~%+GKI%(l5ewRq1ZM(uQYxAj zAX>vdLgvJ^%;9x>Y?7P@M9NxY^+AK3&98lH>g3=3?u#{|Ypy+qIWE>MyVN%N)c*2h zlvq-vREAv5A(uBgccx0-%6TCXb!oNwT&ox&l}}`J#4jINgu@a0!UlGUkF#x@1@bQ` zZ)=@$v3Dq)+S9yzRz-xJ+k57G(X;BH5}`D&XBJkJ`yDq=H7o?O+#HIl-lsfTHpE$8 zbT9edR_)O3y_DmktE@7EgQ>EqjW({jHc9o);aYu_`c8p=6uf<>C?XUPR^tBqmWRR5 z6S4HDN%4sIv0dh(OoZ|UVfTI6eaj)wms>@{@OR|jcCVcraXN!Y@USjSzIP+9um4>c z8%vviLm0%`7jn>Re@Y#c(zO8dqVP zc*ppY|J;|3CnX%=1QxQVxdsbHxHO*^|EvG&s zrMj4ILRrJ-4w5MoeugA}lkQ6c!QGX<9lj)X*U79`8{TQIq@bpGp`Qq5!z@v4qx1fK zcv9zQ+)u9)l@3f6)iU3#y!_fJ+m{H`a|hKK}(%4N^fp_l>BCwVLj6P>tI@-VV3ahAF=6u zop+a$Y*#x~b_ga`oUAQ8C+pZhZtmAgGhaI#u}KquQ6n;y09U_*(A=P$1qXY(9*oDVcFd9va?gq1KtXCh~_a1$BOIvCj zT)AwID?RY|nn8*Wdiz*tmg!|AQ=**cgf$sX)!O;R@w|J36kGB7t&K`;UE(N4xCurw zO*}$T!>)c>QOm1uvwsNfHxGSpdsJQlHcp;u$9hGIHlF4%ZNDhAB}k`dr5fGzRrdG8 z2Ip{;{HGnu-l#ihgyPnV&oVEl(w`QXyT!{gH#hb+5_L$&b=7(b(wa%Yn1h*d`E1Q` zbAqe6MlA}F@LGiZpy%}(1ooA28ezWtw|eX@8&=ixO?k&#zR7OyywBogHgn!Vm|wKN zi)m%LDXAM&Lpke$k)FfTlc~tG|`TqEt$Esw9lkzGdUur=53DO&*63*R4+?2vOly`RCL)h1$Id zp+0*X+h6hlzcxsvi$H!(|C8CVP6_Gg4zSIZ^SsrN*L->23OW<7`TlTk1UncheckedAt(ii); @@ -312,6 +316,8 @@ void AliTOFClusterFinder::Digits2RecPoints(Int_t iEvent) parTOF[2] = d->GetAdc(); // the adc charge parTOF[3] = d->GetTdcND(); // non decalibrated sim time parTOF[4] = d->GetTdc(); // raw time, == Tdc time for the moment + parTOF[5] = 0; // deltaBC + parTOF[6] = 0; // L0-L1 latency Double_t posClus[3]; Double_t covClus[6]; UShort_t volIdClus=GetClusterVolIndex(dig); @@ -381,7 +387,7 @@ void AliTOFClusterFinder::Digits2RecPoints(TTree* digitsTree, TTree* clusterTree Int_t ii; Int_t dig[5]; //cluster detector indeces - Int_t parTOF[5]; //The TOF signal parameters + Int_t parTOF[7]; //The TOF signal parameters Bool_t status=kTRUE; // assume all sim channels ok in the beginning... for (ii=0; iiUncheckedAt(ii); @@ -409,6 +415,8 @@ void AliTOFClusterFinder::Digits2RecPoints(TTree* digitsTree, TTree* clusterTree parTOF[2] = d->GetAdc(); // the adc charge parTOF[3] = d->GetTdcND(); // non decalibrated sim time parTOF[4] = d->GetTdc(); // raw time, == Tdc time for the moment + parTOF[5] = 0; // deltaBC + parTOF[6] = 0; // L0-L1 latency Double_t posClus[3]; Double_t covClus[6]; @@ -458,7 +466,7 @@ void AliTOFClusterFinder::Digits2RecPoints(AliRawReader *rawReader, Int_t dummy = -1; Int_t detectorIndex[5]; - Int_t parTOF[5]; + Int_t parTOF[7]; ofstream ftxt; if (fVerbose==2) ftxt.open("TOFdigitsRead.txt",ios::app); @@ -531,6 +539,8 @@ void AliTOFClusterFinder::Digits2RecPoints(AliRawReader *rawReader, parTOF[2] = tofRawDatum->GetTOT(); //ADC==TOF parTOF[3] = -1;//raw data: no track of undecalib sim time parTOF[4] = tofRawDatum->GetTOF(); // RAW time + parTOF[5] = tofRawDatum->GetDeltaBC(); // deltaBC + parTOF[6] = tofRawDatum->GetL0L1Latency(); // L0-L1 latency Double_t posClus[3]; Double_t covClus[6]; UShort_t volIdClus=GetClusterVolIndex(detectorIndex); @@ -606,7 +616,7 @@ void AliTOFClusterFinder::Digits2RecPoints(Int_t iEvent, AliRawReader *rawReader Int_t dummy = -1; Int_t detectorIndex[5] = {-1, -1, -1, -1, -1}; - Int_t parTOF[5]; + Int_t parTOF[7]; ofstream ftxt; if (fVerbose==2) ftxt.open("TOFdigitsRead.txt",ios::app); @@ -678,6 +688,8 @@ void AliTOFClusterFinder::Digits2RecPoints(Int_t iEvent, AliRawReader *rawReader parTOF[2] = tofRawDatum->GetTOT(); // raw data have ADC=TOT parTOF[3] = -1; //raw data: no track of the undecalib sim time parTOF[4] = tofRawDatum->GetTOF(); // Raw time == TDC + parTOF[5] = tofRawDatum->GetDeltaBC(); // deltaBC + parTOF[6] = tofRawDatum->GetL0L1Latency(); // L0-L1 latency Double_t posClus[3]; Double_t covClus[6]; UShort_t volIdClus=GetClusterVolIndex(detectorIndex); @@ -963,7 +975,7 @@ void AliTOFClusterFinder::FillRecPoint() Int_t ii, jj; Int_t detectorIndex[5]; - Int_t parTOF[5]; + Int_t parTOF[7]; Int_t trackLabels[3]; Int_t digitIndex = -1; Bool_t status=kTRUE; @@ -980,6 +992,8 @@ void AliTOFClusterFinder::FillRecPoint() parTOF[2] = fTofClusters[ii]->GetADC(); // ADC=TOT parTOF[3] = fTofClusters[ii]->GetTDCND(); // TDCND parTOF[4] = fTofClusters[ii]->GetTDCRAW();//RAW + parTOF[5] = fTofClusters[ii]->GetDeltaBC();//deltaBC + parTOF[6] = fTofClusters[ii]->GetL0L1Latency();//L0-L1 latency status=fTofClusters[ii]->GetStatus(); Double_t posClus[3]; Double_t covClus[6]; @@ -1020,11 +1034,19 @@ void AliTOFClusterFinder::CalibrateRecPoint() Double_t tToT; Double_t timeCorr; Int_t tdcCorr; + Float_t tdcLatencyWindow; AliDebug(1," Calibrating TOF Clusters"); AliTOFChannelOnlineArray *calDelay = fTOFcalib->GetTOFOnlineDelay(); AliTOFChannelOnlineStatusArray *calStatus = fTOFcalib->GetTOFOnlineStatus(); TObjArray *calTOFArrayOffline = fTOFcalib->GetTOFCalArrayOffline(); + + AliTOFDeltaBCOffset *deltaBCOffsetObj = fTOFcalib->GetDeltaBCOffset(); + Int_t deltaBCOffset = deltaBCOffsetObj->GetDeltaBCOffset(); + AliTOFCTPLatency *ctpLatencyObj = fTOFcalib->GetCTPLatency(); + Float_t ctpLatency = ctpLatencyObj->GetCTPLatency(); + AliTOFT0Fill *t0FillObj = fTOFcalib->GetT0Fill(); + Float_t t0Fill = t0FillObj->GetT0Fill(); TString validity = (TString)fTOFcalib->GetOfflineValidity(); Int_t calibration = -1; @@ -1046,7 +1068,8 @@ void AliTOFClusterFinder::CalibrateRecPoint() UChar_t statusNoise=calStatus->GetNoiseStatus(index); UChar_t statusHW=calStatus->GetHWStatus(index); UChar_t status=calStatus->GetStatus(index); - + tdcLatencyWindow = calStatus->GetLatencyWindow(index) * 1.e3; /* ns -> ps */ + //check the status, also unknown is fine!!!!!!! AliDebug(2, Form(" Status for channel %d = %d",index, (Int_t)status)); @@ -1082,6 +1105,38 @@ void AliTOFClusterFinder::CalibrateRecPoint() timeCorr=(Double_t)(fTofClusters[ii]->GetTDC())*AliTOFGeometry::TdcBinWidth()*1.E-3-timeCorr;//redefine the time timeCorr*=1.E3; AliDebug(2,Form(" The channel time, corr (ps)= %e",timeCorr )); + + /* here timeCorr should be already corrected for calibration. + * we now go into further corrections keeping in mind that timeCorr + * is in ps. + * + * the following corrections are performed in this way: + * + * time = timeRaw - deltaBC + L0L1Latency + CTPLatency - TDCLatencyWindow - T0Fill + * + */ + + AliDebug(2, Form("applying further corrections (DeltaBC): DeltaBC=%d (BC bins), DeltaBCoffset=%d (BC bins)", fTofClusters[ii]->GetDeltaBC(), deltaBCOffset)); + AliDebug(2, Form("applying further corrections (L0L1Latency): L0L1Latency=%d (BC bins)", fTofClusters[ii]->GetL0L1Latency())); + AliDebug(2, Form("applying further corrections (CTPLatency): CTPLatency=%f (ps)", ctpLatency)); + AliDebug(2, Form("applying further corrections (TDCLatencyWindow): TDCLatencyWindow=%f (ps)", tdcLatencyWindow)); + AliDebug(2, Form("applying further corrections (T0Fill): T0Fill=%f (ps)", t0Fill)); + + /* deltaBC correction */ + timeCorr -= (fTofClusters[ii]->GetDeltaBC() - deltaBCOffset) * AliTOFGeometry::BunchCrossingBinWidth(); + /* L0L1-latency correction */ + timeCorr += fTofClusters[ii]->GetL0L1Latency() * AliTOFGeometry::BunchCrossingBinWidth(); + /* CTP-latency correction (from OCDB) */ + timeCorr += ctpLatency; + /* TDC latency-window correction (from OCDB) */ + timeCorr -= tdcLatencyWindow; + /* T0Fill correction (from OCDB) */ + timeCorr -= t0Fill; + + /* + * end of furhter corrections + */ + tdcCorr=(Int_t)(timeCorr/AliTOFGeometry::TdcBinWidth()); //the corrected time (tdc counts) fTofClusters[ii]->SetTDC(tdcCorr); } // loop on clusters diff --git a/TOF/AliTOFDRMStatusHeader3.h b/TOF/AliTOFDRMStatusHeader3.h new file mode 100644 index 00000000000..3b2e2ada0b6 --- /dev/null +++ b/TOF/AliTOFDRMStatusHeader3.h @@ -0,0 +1,31 @@ +#ifndef ALITOFDRMSTATUSHEADER3_H +#define ALITOFDRMSTATUSHEADER3_H + +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + +/* $Id: AliTOFRawDataFormat.h 23881 2008-02-12 16:46:22Z decaro $ */ + +/////////////////////////////////////////////////////////////// +// // +// This classes provide the TOF raw data bit fields. // +// // +/////////////////////////////////////////////////////////////// + +#include "TROOT.h" + +class AliTOFDRMStatusHeader3 +{ + public: + UInt_t GetSlot() {return fSlotID;}; + UInt_t GetL0BCID() {return fL0BCID;}; + UInt_t GetRunTimeInfo() {return fRunTimeInfo;}; + UInt_t GetWordType() {return fWordType;}; + private: + UInt_t fSlotID: 4; + UInt_t fL0BCID: 12; + UInt_t fRunTimeInfo: 12; + UInt_t fWordType: 4; +}; + +#endif diff --git a/TOF/AliTOFDecoder.cxx b/TOF/AliTOFDecoder.cxx index 0f060893471..2474322d75c 100644 --- a/TOF/AliTOFDecoder.cxx +++ b/TOF/AliTOFDecoder.cxx @@ -173,6 +173,7 @@ AliTOFDecoder::Decode(const UInt_t *rawData, Int_t nWords, const AliRawDataHeade * classes. */ + AliTOFDRMStatusHeader3 *lDRMStatusHeader3; AliTOFTRMGlobalHeader *lTRMGlobalHeader; //TRM global header AliTOFTRMGlobalTrailer *lTRMGlobalTrailer; //TRM global trailer AliTOFTRMChainHeader *lTRMChainHeader; //TRM chain header @@ -199,6 +200,7 @@ AliTOFDecoder::Decode(const UInt_t *rawData, Int_t nWords, const AliRawDataHeade Short_t currentACQ = -1; Short_t currentChain = -1; Short_t currentBunchID = -1; + Short_t currentL0BCID = -1; Short_t currentMiniEventID = cdh ? cdh->GetMiniEventID() : (Short_t)-1; Short_t currentEventID1 = cdh ? cdh->GetEventID1() : (Short_t)-1; AliDebug(1, Form("EvID1 = %d, EvID2 = %d, currentMiniEventID = %d", currentEventID1, cdh->GetEventID2(), currentMiniEventID)); @@ -251,9 +253,18 @@ AliTOFDecoder::Decode(const UInt_t *rawData, Int_t nWords, const AliRawDataHeade decodeStatus = decodeStatus | DRM_BIT; //skip DRM data - for (Int_t i = 0; i < DRM_DATA_WORDS; i++, iWord++, rawData++){ + for (Int_t i = 0; i < DRM_DATA_WORDS; i++, iWord++){ + rawData++; if (fVerbose) AliInfo(Form(" %02x - 0x%08x \t DRM data",decodeStatus,*rawData)); + switch (i) { + case 2: + lDRMStatusHeader3 = (AliTOFDRMStatusHeader3*)rawData; + currentL0BCID = lDRMStatusHeader3->GetL0BCID(); + break; + default: + break; + } } break; @@ -271,7 +282,8 @@ AliTOFDecoder::Decode(const UInt_t *rawData, Int_t nWords, const AliRawDataHeade decodeStatus = decodeStatus | LTM_BIT; //skip LTM data - for (Int_t i = 0; i < LTM_DATA_WORDS; i++, iWord++, rawData++){ + for (Int_t i = 0; i < LTM_DATA_WORDS; i++, iWord++){ + rawData++; if (fVerbose) AliInfo(Form(" %02x - 0x%08x \t LTM data",decodeStatus,*rawData)); } @@ -458,6 +470,7 @@ AliTOFDecoder::Decode(const UInt_t *rawData, Int_t nWords, const AliRawDataHeade hitData.SetTOT((float)lTDCPackedHit->GetTOTWidth() * TOT_BIN_WIDTH); hitData.SetTOTBin(lTDCPackedHit->GetTOTWidth()); hitData.SetDeltaBunchID(currentBunchID - currentEventID1); + hitData.SetL0L1Latency(currentMiniEventID - currentL0BCID); //orphane leading hit if (hitData.GetPS()==LEADING_HIT_PS){ hitData.SetTime((float)lTDCUnpackedHit->GetHitTime() * TIME_BIN_WIDTH); @@ -552,6 +565,7 @@ AliTOFDecoder::Decode(const UInt_t *rawData, Int_t nWords, const AliRawDataHeade hitData.SetTOT(-1.); hitData.SetTOTBin(-1); hitData.SetDeltaBunchID(currentBunchID - currentEventID1); + hitData.SetL0L1Latency(currentMiniEventID - currentL0BCID); //push hit data in data buffer if (fDataBuffer != 0x0) fDataBuffer->Add(hitData); @@ -589,6 +603,7 @@ AliTOFDecoder::Decode(const UInt_t *rawData, Int_t nWords, const AliRawDataHeade hitData.SetTOT(-1.); hitData.SetTOTBin(-1); hitData.SetDeltaBunchID(currentBunchID - currentEventID1); + hitData.SetL0L1Latency(currentMiniEventID - currentL0BCID); //push hit data in data buffer if (fDataBuffer != 0x0) fDataBuffer->Add(hitData); diff --git a/TOF/AliTOFDeltaBCOffset.cxx b/TOF/AliTOFDeltaBCOffset.cxx new file mode 100644 index 00000000000..25aec195859 --- /dev/null +++ b/TOF/AliTOFDeltaBCOffset.cxx @@ -0,0 +1,75 @@ +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +/* + * + * + * this class defines the DeltaBCOffset object to be stored + * in OCDB in order to apply DeltaBC correction during + * reconstruction. + * + * + */ + +#include "AliTOFDeltaBCOffset.h" + +ClassImp(AliTOFDeltaBCOffset) + +//_________________________________________________________ + +AliTOFDeltaBCOffset::AliTOFDeltaBCOffset() : + TObject(), + fDeltaBCOffset(0) +{ + /* + * default constructor + */ +} + +//_________________________________________________________ + +AliTOFDeltaBCOffset::~AliTOFDeltaBCOffset() +{ + /* + * default destructor + */ +} + +//_________________________________________________________ + +AliTOFDeltaBCOffset::AliTOFDeltaBCOffset(const AliTOFDeltaBCOffset &source) : + TObject(source), + fDeltaBCOffset(source.fDeltaBCOffset) +{ + /* + * copy constructor + */ +} + +//_________________________________________________________ + +AliTOFDeltaBCOffset & +AliTOFDeltaBCOffset::operator=(const AliTOFDeltaBCOffset &source) +{ + /* + * operator= + */ + + if (this == &source) return *this; + TObject::operator=(source); + fDeltaBCOffset = source.fDeltaBCOffset; + return *this; +} + diff --git a/TOF/AliTOFDeltaBCOffset.h b/TOF/AliTOFDeltaBCOffset.h new file mode 100644 index 00000000000..e195940fbc2 --- /dev/null +++ b/TOF/AliTOFDeltaBCOffset.h @@ -0,0 +1,40 @@ +#ifndef ALITOFDELTABCOFFSET_H +#define ALITOFDELTABCOFFSET_H + +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ +/* $Id$ */ + +/* + * + * + * this class defines the DeltaBCOffset object to be stored + * in OCDB in order to apply DeltaBC correction during + * reconstruction. + * + * + */ + +#include "TObject.h" + +class AliTOFDeltaBCOffset : +public TObject +{ + + public: + + AliTOFDeltaBCOffset(); // default constructor + virtual ~AliTOFDeltaBCOffset(); // default destructor + AliTOFDeltaBCOffset(const AliTOFDeltaBCOffset &source); // copy constructor + AliTOFDeltaBCOffset &operator=(const AliTOFDeltaBCOffset &source); // operator= + Int_t GetDeltaBCOffset() const {return fDeltaBCOffset;}; // getter + void SetDeltaBCOffset(Int_t value) {fDeltaBCOffset = value;}; // setter + + private: + + Int_t fDeltaBCOffset; // deltaBC offset (BC bins) + + ClassDef(AliTOFDeltaBCOffset, 1); +}; + +#endif /* ALITOFDELTABCOFFSET_H */ diff --git a/TOF/AliTOFGeometry.cxx b/TOF/AliTOFGeometry.cxx index 829e640eb13..5dfd0b7b57b 100644 --- a/TOF/AliTOFGeometry.cxx +++ b/TOF/AliTOFGeometry.cxx @@ -149,6 +149,7 @@ const Float_t AliTOFGeometry::fgkPhiSec= 20;//sector Phi width (deg) const Float_t AliTOFGeometry::fgkTdcBin = 24.4; // time-of-flight bin width [ps] const Float_t AliTOFGeometry::fgkToTBin = 48.8; // time-over-threshold bin width [ps] +const Float_t AliTOFGeometry::fgkBunchCrossingBin = fgkTdcBin * 1024; // bunch-crossing bin width [ps] const Float_t AliTOFGeometry::fgkDeadTime = 25E+03; // Single channel dead time (ps) const Float_t AliTOFGeometry::fgkMatchingWindow = fgkTdcBin*TMath::Power(2,13); // Matching window (ps) diff --git a/TOF/AliTOFGeometry.h b/TOF/AliTOFGeometry.h index fb40dec3e3b..07d9b2ba564 100644 --- a/TOF/AliTOFGeometry.h +++ b/TOF/AliTOFGeometry.h @@ -71,6 +71,7 @@ class AliTOFGeometry: public TObject{ static Float_t TdcBinWidth() {return fgkTdcBin;}; static Float_t ToTBinWidth() {return fgkToTBin;}; + static Float_t BunchCrossingBinWidth() {return fgkBunchCrossingBin;}; virtual void ImportGeometry(); virtual void SetHoles(Bool_t holes) {fHoles = holes;}; @@ -171,6 +172,7 @@ class AliTOFGeometry: public TObject{ static const Float_t fgkTdcBin; // time-of-flight bin width [ps] static const Float_t fgkToTBin; // time-over-threshold bin width [ps] + static const Float_t fgkBunchCrossingBin; // bunch-crossing bin width [ps] ClassDef(AliTOFGeometry,8) // TOF Geometry base class }; diff --git a/TOF/AliTOFHitData.cxx b/TOF/AliTOFHitData.cxx index 1edd800e9c3..2ff601a9844 100644 --- a/TOF/AliTOFHitData.cxx +++ b/TOF/AliTOFHitData.cxx @@ -45,6 +45,7 @@ AliTOFHitData::AliTOFHitData(): fTOT(-1), fTOTBin(-1), fDeltaBunchID(-1), + fL0L1Latency(-1), fDeltaEventCounter(-1) { //ctor @@ -66,6 +67,7 @@ AliTOFHitData::AliTOFHitData(const AliTOFHitData &source): fTOT(source.fTOT), fTOTBin(source.fTOTBin), fDeltaBunchID(source.fDeltaBunchID), + fL0L1Latency(source.fL0L1Latency), fDeltaEventCounter(source.fDeltaEventCounter) { // copy constructor @@ -90,6 +92,7 @@ AliTOFHitData& AliTOFHitData::operator=(const AliTOFHitData & source) { fTOT= source.fTOT; fTOTBin= source.fTOTBin; fDeltaBunchID=source.fDeltaBunchID; + fL0L1Latency=source.fL0L1Latency; fDeltaEventCounter=source.fDeltaEventCounter; } return *this; diff --git a/TOF/AliTOFHitData.h b/TOF/AliTOFHitData.h index 3c6977a9be0..ead4067770d 100644 --- a/TOF/AliTOFHitData.h +++ b/TOF/AliTOFHitData.h @@ -37,6 +37,7 @@ class AliTOFHitData : public TObject{ Float_t GetTOT() const {return fTOT;}; Int_t GetTOTBin() const {return fTOTBin;}; Int_t GetDeltaBunchID() const {return fDeltaBunchID;}; + Int_t GetL0L1Latency() const {return fL0L1Latency;}; Int_t GetDeltaEventCounter() const {return fDeltaEventCounter;}; void SetVolume(Int_t *Volume); @@ -53,6 +54,7 @@ class AliTOFHitData : public TObject{ void SetTOT(Float_t TOT) { fTOT=TOT;}; void SetTOTBin(Int_t TOTBin) {fTOTBin=TOTBin;}; void SetDeltaBunchID(Int_t Value) {fDeltaBunchID=Value;}; + void SetL0L1Latency(Int_t Value) {fL0L1Latency=Value;}; void SetDeltaEventCounter(Int_t Value) {fDeltaEventCounter=Value;}; private: @@ -69,9 +71,10 @@ class AliTOFHitData : public TObject{ Float_t fTOT; // tot [ns] Int_t fTOTBin; // TOT [TOT bin = 48.4ps] Int_t fDeltaBunchID; // TRM bunchID - miniEventID + Int_t fL0L1Latency; // L0BCID - miniEventID Int_t fDeltaEventCounter; // TRM event counter - DRM local event counter - ClassDef(AliTOFHitData, 1); + ClassDef(AliTOFHitData, 2); }; #endif diff --git a/TOF/AliTOFRawDataFormat.h b/TOF/AliTOFRawDataFormat.h index e14e91c3107..0a0208cbecf 100644 --- a/TOF/AliTOFRawDataFormat.h +++ b/TOF/AliTOFRawDataFormat.h @@ -12,6 +12,7 @@ // // /////////////////////////////////////////////////////////////// +#include "AliTOFDRMStatusHeader3.h" #include "AliTOFTRMGlobalHeader.h" #include "AliTOFTRMGlobalTrailer.h" #include "AliTOFTRMChainHeader.h" diff --git a/TOF/AliTOFRawStream.cxx b/TOF/AliTOFRawStream.cxx index 4f45f2bbb02..19e0181f8fd 100644 --- a/TOF/AliTOFRawStream.cxx +++ b/TOF/AliTOFRawStream.cxx @@ -1540,20 +1540,15 @@ AliTOFRawStream::LoadRawDataBuffers(Int_t indexDDL, Int_t verbose) Int_t hitChan = hitData->GetChan(); Int_t hitTimeBin = hitData->GetTimeBin(); Int_t hitTOTBin = hitData->GetTOTBin(); - - if (fgApplyBCCorrections) { - /* DDL BC shift time correction */ - hitTimeBin += 1024 * fgkddlBCshift[indexDDL]; - /* deltaBC shift time correction */ - hitTimeBin += 1024 * (hitData->GetDeltaBunchID() - 37); - } + Int_t hitDeltaBC = hitData->GetDeltaBunchID(); + Int_t hitL0L1Latency = hitData->GetL0L1Latency(); Int_t hitLeading = hitData->GetTimeBin(); Int_t hitTrailing = -1; Int_t hitError = -1; TClonesArray &arrayTofRawData = *fTOFrawData; - new (arrayTofRawData[fPackedDigits++]) AliTOFrawData(hitSlotID, hitChain, hitTDC, hitChan, hitTimeBin, hitTOTBin, hitLeading, hitTrailing, hitPS, hitACQ, hitError); + new (arrayTofRawData[fPackedDigits++]) AliTOFrawData(hitSlotID, hitChain, hitTDC, hitChan, hitTimeBin, hitTOTBin, hitLeading, hitTrailing, hitPS, hitACQ, hitError, hitDeltaBC, hitL0L1Latency); } if (verbose > 0) diff --git a/TOF/AliTOFReconstructor.cxx b/TOF/AliTOFReconstructor.cxx index bdbf7e1898b..23bd66c5f54 100644 --- a/TOF/AliTOFReconstructor.cxx +++ b/TOF/AliTOFReconstructor.cxx @@ -59,6 +59,11 @@ AliTOFReconstructor::AliTOFReconstructor() if(!fTOFcalib->ReadParOnlineStatusFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} if(!fTOFcalib->ReadParOfflineFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} + + + if(!fTOFcalib->ReadDeltaBCOffsetFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} + if(!fTOFcalib->ReadCTPLatencyFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} + if(!fTOFcalib->ReadT0FillFromCDB("TOF/Calib",-1)) {AliFatal("Exiting, no CDB object found!!!");exit(0);} } //_____________________________________________________________________________ diff --git a/TOF/AliTOFT0Fill.cxx b/TOF/AliTOFT0Fill.cxx new file mode 100644 index 00000000000..6f023507ee2 --- /dev/null +++ b/TOF/AliTOFT0Fill.cxx @@ -0,0 +1,75 @@ +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +/* + * + * + * this class defines the T0Fill object to be stored + * in OCDB in order to apply T0Fill correction during + * reconstruction. + * + * + */ + +#include "AliTOFT0Fill.h" + +ClassImp(AliTOFT0Fill) + +//_________________________________________________________ + +AliTOFT0Fill::AliTOFT0Fill() : + TObject(), + fT0Fill(0.) +{ + /* + * default constructor + */ +} + +//_________________________________________________________ + +AliTOFT0Fill::~AliTOFT0Fill() +{ + /* + * default destructor + */ +} + +//_________________________________________________________ + +AliTOFT0Fill::AliTOFT0Fill(const AliTOFT0Fill &source) : + TObject(source), + fT0Fill(source.fT0Fill) +{ + /* + * copy constructor + */ +} + +//_________________________________________________________ + +AliTOFT0Fill & +AliTOFT0Fill::operator=(const AliTOFT0Fill &source) +{ + /* + * operator= + */ + + if (this == &source) return *this; + TObject::operator=(source); + fT0Fill = source.fT0Fill; + return *this; +} + diff --git a/TOF/AliTOFT0Fill.h b/TOF/AliTOFT0Fill.h new file mode 100644 index 00000000000..b768c6d2f86 --- /dev/null +++ b/TOF/AliTOFT0Fill.h @@ -0,0 +1,40 @@ +#ifndef ALITOFT0FILL_H +#define ALITOFT0FILL_H + +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ +/* $Id$ */ + +/* + * + * + * this class defines the T0Fill object to be stored + * in OCDB in order to apply T0Fill correction during + * reconstruction. + * + * + */ + +#include "TObject.h" + +class AliTOFT0Fill : +public TObject +{ + + public: + + AliTOFT0Fill(); // default constructor + virtual ~AliTOFT0Fill(); // default destructor + AliTOFT0Fill(const AliTOFT0Fill &source); // copy constructor + AliTOFT0Fill &operator=(const AliTOFT0Fill &source); // operator= + Float_t GetT0Fill() const {return fT0Fill;}; // getter + void SetT0Fill(Float_t value) {fT0Fill = value;}; // setter + + private: + + Float_t fT0Fill; // event time (ps) + + ClassDef(AliTOFT0Fill, 1); +}; + +#endif /* ALITOFT0FILL_H */ diff --git a/TOF/AliTOFcalib.cxx b/TOF/AliTOFcalib.cxx index a03a70194f4..422483352fe 100644 --- a/TOF/AliTOFcalib.cxx +++ b/TOF/AliTOFcalib.cxx @@ -113,6 +113,10 @@ author: Chiara Zampolli, zampolli@bo.infn.it #include "AliTOFChannelOffline.h" #include "AliTOFGeometry.h" #include "AliTOFRecoParam.h" +#include "AliTOFDeltaBCOffset.h" +#include "AliTOFCTPLatency.h" +#include "AliTOFT0Fill.h" + class TROOT; class TStyle; @@ -140,7 +144,10 @@ AliTOFcalib::AliTOFcalib(): fNruns(0), fFirstRun(0), fLastRun(AliCDBRunRange::Infinity()), - fConfigMap(new TMap) + fConfigMap(new TMap), + fDeltaBCOffset(NULL), + fCTPLatency(NULL), + fT0Fill(NULL) { //TOF Calibration Class ctor fNChannels = AliTOFGeometry::NSectors()*(2*(AliTOFGeometry::NStripC()+AliTOFGeometry::NStripB())+AliTOFGeometry::NStripA())*AliTOFGeometry::NpadZ()*AliTOFGeometry::NpadX(); @@ -164,7 +171,10 @@ AliTOFcalib::AliTOFcalib(const AliTOFcalib & calib): fNruns(calib.fNruns), fFirstRun(calib.fFirstRun), fLastRun(calib.fLastRun), - fConfigMap(calib.fConfigMap) + fConfigMap(calib.fConfigMap), + fDeltaBCOffset(NULL), + fCTPLatency(NULL), + fT0Fill(NULL) { //TOF Calibration Class copy ctor for (Int_t iarray = 0; iarrayAddAt(calChOnlineStHW,iarray); fTOFCalOffline->AddAt(calChOffline,iarray); } + + if (calib.fDeltaBCOffset) fDeltaBCOffset = new AliTOFDeltaBCOffset(*calib.fDeltaBCOffset); + if (calib.fCTPLatency) fCTPLatency = new AliTOFCTPLatency(*calib.fCTPLatency); + if (calib.fT0Fill) fT0Fill = new AliTOFT0Fill(*calib.fT0Fill); } //____________________________________________________________________________ @@ -213,6 +227,22 @@ AliTOFcalib& AliTOFcalib::operator=(const AliTOFcalib &calib) fTOFCalOnlineHW->AddAt(calChOnlineStHW,iarray); fTOFCalOffline->AddAt(calChOffline,iarray); } + + if (calib.fDeltaBCOffset) { + if (fDeltaBCOffset) *fDeltaBCOffset = *calib.fDeltaBCOffset; + else fDeltaBCOffset = new AliTOFDeltaBCOffset(*calib.fDeltaBCOffset); + } + + if (calib.fCTPLatency) { + if (fCTPLatency) *fCTPLatency = *calib.fCTPLatency; + else fCTPLatency = new AliTOFCTPLatency(*calib.fCTPLatency); + } + + if (calib.fT0Fill) { + if (fT0Fill) *fT0Fill = *calib.fT0Fill; + else fT0Fill = new AliTOFT0Fill(*calib.fT0Fill); + } + return *this; } @@ -246,9 +276,13 @@ AliTOFcalib::~AliTOFcalib() if (fConfigMap){ delete fConfigMap; } + if (fDeltaBCOffset) delete fDeltaBCOffset; + if (fCTPLatency) delete fCTPLatency; + if (fT0Fill) delete fT0Fill; } if (fTree!=0x0) delete fTree; if (fChain!=0x0) delete fChain; + } //_____________________________________________________________________________ void AliTOFcalib::CreateCalArrays(){ @@ -1793,3 +1827,179 @@ Int_t AliTOFcalib::FindBins(TH1F* h, Double_t *binsProfile) const{ } return nusefulbins; } + + +//---------------------------------------------------------------------------- + +void +AliTOFcalib::CreateDeltaBCOffset() +{ + /* + * create deltaBC offset + */ + + if (fDeltaBCOffset) { + AliWarning("DeltaBCOffset object already defined, cannot create a new one"); + return; + } + fDeltaBCOffset = new AliTOFDeltaBCOffset(); +} + +//---------------------------------------------------------------------------- + +void +AliTOFcalib::CreateCTPLatency() +{ + /* + * create CTP latency + */ + + if (fCTPLatency) { + AliWarning("CTPLatency object already defined, cannot create a new one"); + return; + } + fCTPLatency = new AliTOFCTPLatency(); +} + +//---------------------------------------------------------------------------- + +void +AliTOFcalib::CreateT0Fill() +{ + /* + * create event-time + */ + + if (fT0Fill) { + AliWarning("T0Fill object already defined, cannot create a new one"); + return; + } + fT0Fill = new AliTOFT0Fill(); +} + +//---------------------------------------------------------------------------- + +void +AliTOFcalib::WriteDeltaBCOffsetOnCDB(const Char_t *sel , Int_t minrun, Int_t maxrun) +{ + /* + * deltaBC offset on CDB + */ + + if (!fDeltaBCOffset) return; + AliCDBId id(Form("%s/DeltaBCOffset", sel), minrun, maxrun); + AliCDBMetaData *md = new AliCDBMetaData(); + md->SetResponsible("Roberto Preghenella"); + AliCDBManager *man = AliCDBManager::Instance(); + man->Put(fDeltaBCOffset, id, md); + AliDebug(2,Form("DeltaBCOffset written on CDB with run range [%i, %i] ",minrun ,maxrun)); + delete md; +} + +//---------------------------------------------------------------------------- + +void +AliTOFcalib::WriteCTPLatencyOnCDB(const Char_t *sel , Int_t minrun, Int_t maxrun) +{ + /* + * write CTP latency on CDB + */ + + if (!fCTPLatency) return; + AliCDBId id(Form("%s/CTPLatency", sel), minrun, maxrun); + AliCDBMetaData *md = new AliCDBMetaData(); + md->SetResponsible("Roberto Preghenella"); + AliCDBManager *man = AliCDBManager::Instance(); + man->Put(fCTPLatency, id, md); + AliDebug(2,Form("CTPLatency written on CDB with run range [%i, %i] ",minrun ,maxrun)); + delete md; +} + +//---------------------------------------------------------------------------- + +void +AliTOFcalib::WriteT0FillOnCDB(const Char_t *sel , Int_t minrun, Int_t maxrun) +{ + /* + * write event-time on CDB + */ + + if (!fT0Fill) return; + AliCDBId id(Form("%s/T0Fill", sel), minrun, maxrun); + AliCDBMetaData *md = new AliCDBMetaData(); + md->SetResponsible("Roberto Preghenella"); + AliCDBManager *man = AliCDBManager::Instance(); + man->Put(fT0Fill, id, md); + AliDebug(2,Form("T0Fill written on CDB with run range [%i, %i] ",minrun ,maxrun)); + delete md; +} + +//---------------------------------------------------------------------------- + +Bool_t +AliTOFcalib::ReadDeltaBCOffsetFromCDB(const Char_t *sel , Int_t nrun) +{ + /* + * read deltaBC offset from CDB + */ + + AliCDBManager *man = AliCDBManager::Instance(); + AliCDBEntry *entry = man->Get(Form("%s/DeltaBCOffset", sel),nrun); + if (!entry) { + AliFatal("No DeltaBCOffset entry found in CDB"); + exit(0); + } + fDeltaBCOffset =(AliTOFDeltaBCOffset *)entry->GetObject(); + if(!fDeltaBCOffset){ + AliFatal("No DeltaBCOffset object found in CDB entry"); + exit(0); + } + return kTRUE; +} + +//---------------------------------------------------------------------------- + +Bool_t +AliTOFcalib::ReadCTPLatencyFromCDB(const Char_t *sel , Int_t nrun) +{ + /* + * read CTP latency from CDB + */ + + AliCDBManager *man = AliCDBManager::Instance(); + AliCDBEntry *entry = man->Get(Form("%s/CTPLatency", sel),nrun); + if (!entry) { + AliFatal("No CTPLatency entry found in CDB"); + exit(0); + } + fCTPLatency =(AliTOFCTPLatency *)entry->GetObject(); + if(!fCTPLatency){ + AliFatal("No CTPLatency object found in CDB entry"); + exit(0); + } + return kTRUE; +} + +//---------------------------------------------------------------------------- + +Bool_t +AliTOFcalib::ReadT0FillFromCDB(const Char_t *sel , Int_t nrun) +{ + /* + * read event-time from CDB + */ + + AliCDBManager *man = AliCDBManager::Instance(); + AliCDBEntry *entry = man->Get(Form("%s/T0Fill", sel),nrun); + if (!entry) { + AliFatal("No T0Fill entry found in CDB"); + exit(0); + } + fT0Fill =(AliTOFT0Fill *)entry->GetObject(); + if(!fT0Fill){ + AliFatal("No T0Fill object found in CDB entry"); + exit(0); + } + return kTRUE; +} + diff --git a/TOF/AliTOFcalib.h b/TOF/AliTOFcalib.h index 3263622be6a..5df86d9b6d1 100644 --- a/TOF/AliTOFcalib.h +++ b/TOF/AliTOFcalib.h @@ -40,6 +40,9 @@ class AliTOFCal; class AliTOFRecoParam; class AliTOFChannelOnlineStatusArray; class AliTOFChannelOnlineArray; +class AliTOFDeltaBCOffset; +class AliTOFCTPLatency; +class AliTOFT0Fill; class AliTOFcalib:public TTask{ public: @@ -64,6 +67,13 @@ public: void SetOfflineValidity(const char* validity) {fkValidity = validity;} Int_t NChannels()const{return fNChannels;} + void CreateDeltaBCOffset(); + void CreateCTPLatency(); + void CreateT0Fill(); + AliTOFDeltaBCOffset *GetDeltaBCOffset() const {return fDeltaBCOffset;}; + AliTOFCTPLatency *GetCTPLatency() const {return fCTPLatency;}; + AliTOFT0Fill *GetT0Fill() const {return fT0Fill;}; + // Methods to retrieve/write parameters from/on CDB // writing @@ -87,6 +97,10 @@ public: void WriteParOnlineHWOnCDB(const Char_t *sel); // old, before unification of status info void WriteParOfflineOnCDB(const Char_t *sel, const Char_t *validity); + void WriteDeltaBCOffsetOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteCTPLatencyOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteT0FillOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + // reading Bool_t ReadSimHistoFromCDB(const Char_t *sel, Int_t nrun); Bool_t ReadConfigMapFromCDB(const Char_t *sel, Int_t nrun); @@ -119,6 +133,10 @@ public: void SetLastRun(Int_t lastRun) {fLastRun=lastRun;} Int_t GetLastRun() const {return fLastRun;} + Bool_t ReadDeltaBCOffsetFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadCTPLatencyFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadT0FillFromCDB(const Char_t *sel, Int_t nrun); + private: Int_t fNChannels; // number of TOF channels @@ -142,7 +160,11 @@ private: Int_t fLastRun; // last run for calib obj validity TMap* fConfigMap; // map holding configuration obj - ClassDef(AliTOFcalib,7); + AliTOFDeltaBCOffset *fDeltaBCOffset; // deltaBC offset + AliTOFCTPLatency *fCTPLatency; // CTP latency + AliTOFT0Fill *fT0Fill; // T0 fill + + ClassDef(AliTOFcalib,8); }; #endif // AliTOFcalib_H diff --git a/TOF/AliTOFcluster.cxx b/TOF/AliTOFcluster.cxx index e371a95e2ef..0a7bb1ccdb6 100644 --- a/TOF/AliTOFcluster.cxx +++ b/TOF/AliTOFcluster.cxx @@ -48,7 +48,9 @@ AliTOFcluster::AliTOFcluster(): fADC(0), fTdcND(0), fTdcRAW(0), - fStatus(kTRUE) + fStatus(kTRUE), + fDeltaBC(0), + fL0L1Latency(0) { // // default ctor @@ -76,7 +78,9 @@ AliTOFcluster::AliTOFcluster(UShort_t volId, fADC(par[2]), fTdcND(par[3]), fTdcRAW(par[4]), - fStatus(status) + fStatus(status), + fDeltaBC(par[5]), + fL0L1Latency(par[6]) { // // constructor @@ -103,7 +107,9 @@ AliTOFcluster::AliTOFcluster(const AliTOFcluster & cluster): fADC(cluster.fADC), fTdcND(cluster.fTdcND), fTdcRAW(cluster.fTdcRAW), - fStatus(cluster.fStatus) + fStatus(cluster.fStatus), + fDeltaBC(cluster.fDeltaBC), + fL0L1Latency(cluster.fL0L1Latency) { // // copy ctor for AliTOFcluster object diff --git a/TOF/AliTOFcluster.h b/TOF/AliTOFcluster.h index 92106366221..9b5bbc49f8c 100644 --- a/TOF/AliTOFcluster.h +++ b/TOF/AliTOFcluster.h @@ -42,6 +42,8 @@ class AliTOFcluster : public AliCluster3D { Int_t IsUsed() const {return (fADC<0) ? 1 : 0;} // Flagging Int_t GetDetInd(Int_t n) const {return fdetIndex[n];} // Cluster Detector Indices getter Int_t GetIndex() const {return fIdx;} // Digit Index getter + Int_t GetDeltaBC() const {return fDeltaBC;}; // deltaBC + Int_t GetL0L1Latency() const {return fL0L1Latency;}; // L0L1 latency void Use(Int_t = 0) {fADC=-fADC;} // setter void SetQuality(Double_t quality) {fQuality = quality;} // Cluster quality setter @@ -50,6 +52,8 @@ class AliTOFcluster : public AliCluster3D { void SetTDC(Int_t Tdc) {fTDC = Tdc;} // Cluster ToF setter void SetTDCND(Int_t Tdc) {fTdcND = Tdc;} // Cluster ToFnd setter void SetTDCRAW(Int_t Tdc) {fTdcRAW = Tdc;} // Cluster ToF-raw setter + void SetDeltaBC(Int_t value) {fDeltaBC = value;}; // deltaBC + void SetL0L1Latency(Int_t value) {fL0L1Latency = value;}; // L0-L1 latency private: @@ -70,8 +74,10 @@ class AliTOFcluster : public AliCluster3D { Int_t fTdcND; // TDC count Int_t fTdcRAW; // RAW TDC count Bool_t fStatus; // cluster online status + Int_t fDeltaBC; // deltaBC + Int_t fL0L1Latency; // L0L1 latency - ClassDef(AliTOFcluster, 6) // TOF cluster + ClassDef(AliTOFcluster, 7) // TOF cluster }; #endif diff --git a/TOF/AliTOFrawData.cxx b/TOF/AliTOFrawData.cxx index c8480d099ec..0378f577b02 100644 --- a/TOF/AliTOFrawData.cxx +++ b/TOF/AliTOFrawData.cxx @@ -51,7 +51,9 @@ AliTOFrawData::AliTOFrawData() : fTrailing(-1), fToT(-1), fTime(-1), - fError(-1) + fError(-1), + fDeltaBC(-1), + fL0L1Latency(-1) { // default ctr @@ -72,7 +74,9 @@ AliTOFrawData::AliTOFrawData(Int_t a, Int_t b, Int_t c, Int_t d, Int_t e, fTrailing(-1), fToT(f), fTime(e), - fError(l) + fError(l), + fDeltaBC(0), + fL0L1Latency(0) { // ctr @@ -81,7 +85,7 @@ AliTOFrawData::AliTOFrawData(Int_t a, Int_t b, Int_t c, Int_t d, Int_t e, //_____________________________________________________________________________ AliTOFrawData::AliTOFrawData(Int_t a, Int_t b, Int_t c, Int_t d, Int_t e, - Int_t f, Int_t ee, Int_t ff, Int_t g, Int_t h, Int_t l) : + Int_t f, Int_t ee, Int_t ff, Int_t g, Int_t h, Int_t l, Int_t deltaBC, Int_t l0l1) : TObject(), fACQflag(h), fPSbit(g), @@ -93,7 +97,9 @@ AliTOFrawData::AliTOFrawData(Int_t a, Int_t b, Int_t c, Int_t d, Int_t e, fTrailing(ff), fToT(f), fTime(e), - fError(l) + fError(l), + fDeltaBC(deltaBC), + fL0L1Latency(l0l1) { // ctr @@ -113,7 +119,9 @@ AliTOFrawData::AliTOFrawData(const AliTOFrawData& r) : fTrailing(-1), fToT(-1), fTime(-1), - fError(-1) + fError(-1), + fDeltaBC(-1), + fL0L1Latency(-1) { // dummy copy constructor @@ -129,6 +137,8 @@ AliTOFrawData::AliTOFrawData(const AliTOFrawData& r) : fToT = r.fToT; fTime = r.fTime; fError = r.fError; + fDeltaBC = r.fDeltaBC; + fL0L1Latency = r.fL0L1Latency; } @@ -149,6 +159,8 @@ AliTOFrawData& AliTOFrawData::operator=(const AliTOFrawData& r) this->fToT = r.fToT; this->fTime = r.fTime; this->fError = r.fError; + this->fDeltaBC = r.fDeltaBC; + this->fL0L1Latency = r.fL0L1Latency; return *this; } diff --git a/TOF/AliTOFrawData.h b/TOF/AliTOFrawData.h index 7f7db69aae6..4ad50961ef6 100644 --- a/TOF/AliTOFrawData.h +++ b/TOF/AliTOFrawData.h @@ -18,7 +18,7 @@ class AliTOFrawData : public TObject { public: AliTOFrawData(); // default ctr AliTOFrawData(Int_t a, Int_t b, Int_t c, Int_t d, Int_t e, Int_t f, Int_t g, Int_t h, Int_t l); // ctr - AliTOFrawData(Int_t a, Int_t b, Int_t c, Int_t d, Int_t e, Int_t f, Int_t ee, Int_t ff, Int_t g, Int_t h, Int_t l); // ctr + AliTOFrawData(Int_t a, Int_t b, Int_t c, Int_t d, Int_t e, Int_t f, Int_t ee, Int_t ff, Int_t g, Int_t h, Int_t l, Int_t deltaBC = 0, Int_t l0l1 = 0); // ctr ~AliTOFrawData() {}; // default dtr AliTOFrawData(const AliTOFrawData& r); // dummy copy constructor AliTOFrawData& operator=(const AliTOFrawData& r); // dummy assignment operator @@ -33,6 +33,12 @@ class AliTOFrawData : public TObject { Int_t GetTOT() const; Int_t GetLeading() const {return fLeading;}; Int_t GetTrailing() const {return fTrailing;}; + + Int_t GetDeltaBC() const {return fDeltaBC;}; + Int_t GetL0L1Latency() const {return fL0L1Latency;}; + + void SetDeltaBC(Int_t value) {fDeltaBC = value;}; + void SetL0L1Latency(Int_t value) {fL0L1Latency = value;}; private: Int_t fACQflag; // ACQ flag @@ -47,10 +53,13 @@ class AliTOFrawData : public TObject { Int_t fTrailing; // Trailing Edge Int_t fToT; // Time-Over-Threashould Int_t fTime; // Time - + Int_t fError; // Error flag - ClassDef(AliTOFrawData, 1) // class for TOF raw data + Int_t fDeltaBC; // delta BC + Int_t fL0L1Latency; // L0-L1 latency + + ClassDef(AliTOFrawData, 2) // class for TOF raw data }; #endif diff --git a/TOF/MakeCDBEntryCTPLatency.C b/TOF/MakeCDBEntryCTPLatency.C new file mode 100644 index 00000000000..b33205a4b68 --- /dev/null +++ b/TOF/MakeCDBEntryCTPLatency.C @@ -0,0 +1,21 @@ +MakeCDBEntryCTPLatency(Float_t value = 0., Int_t startRun = 0, Int_t endRun = AliCDBRunRange::Infinity()) +{ + + /* create object */ + AliTOFCTPLatency *obj = new AliTOFCTPLatency(); + obj->SetCTPLatency(value); + + /* create cdb info */ + AliCDBId id("TOF/Calib/CTPLatency", startRun, endRun); + AliCDBMetaData *md = new AliCDBMetaData(); + md->SetResponsible("Roberto Preghenella"); + md->SetComment("CTPLatency (ps)"); + md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); + md->SetBeamPeriod(0); + + /* put object in cdb */ + AliCDBManager *cdb = AliCDBManager::Instance(); + cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); + cdb->GetDefaultStorage()->Put(obj, id, md); + +} diff --git a/TOF/MakeCDBEntryDeltaBCOffset.C b/TOF/MakeCDBEntryDeltaBCOffset.C new file mode 100644 index 00000000000..37469eb9cea --- /dev/null +++ b/TOF/MakeCDBEntryDeltaBCOffset.C @@ -0,0 +1,21 @@ +MakeCDBEntryDeltaBCOffset(Int_t value = 0, Int_t startRun = 0, Int_t endRun = AliCDBRunRange::Infinity()) +{ + + /* create object */ + AliTOFDeltaBCOffset *obj = new AliTOFDeltaBCOffset(); + obj->SetDeltaBCOffset(value); + + /* create cdb info */ + AliCDBId id("TOF/Calib/DeltaBCOffset", startRun, endRun); + AliCDBMetaData *md = new AliCDBMetaData(); + md->SetResponsible("Roberto Preghenella"); + md->SetComment("DeltaBCOffset (BC bins)"); + md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); + md->SetBeamPeriod(0); + + /* put object in cdb */ + AliCDBManager *cdb = AliCDBManager::Instance(); + cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); + cdb->GetDefaultStorage()->Put(obj, id, md); + +} diff --git a/TOF/MakeCDBEntryT0Fill.C b/TOF/MakeCDBEntryT0Fill.C new file mode 100644 index 00000000000..ded07dd6613 --- /dev/null +++ b/TOF/MakeCDBEntryT0Fill.C @@ -0,0 +1,21 @@ +MakeCDBEntryT0Fill(Float_t value = 0., Int_t startRun = 0, Int_t endRun = AliCDBRunRange::Infinity()) +{ + + /* create object */ + AliTOFT0Fill *obj = new AliTOFT0Fill(); + obj->SetT0Fill(value); + + /* create cdb info */ + AliCDBId id("TOF/Calib/T0Fill", startRun, endRun); + AliCDBMetaData *md = new AliCDBMetaData(); + md->SetResponsible("Roberto Preghenella"); + md->SetComment("T0Fill (ps)"); + md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); + md->SetBeamPeriod(0); + + /* put object in cdb */ + AliCDBManager *cdb = AliCDBManager::Instance(); + cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); + cdb->GetDefaultStorage()->Put(obj, id, md); + +} diff --git a/TOF/TOFbaseLinkDef.h b/TOF/TOFbaseLinkDef.h index ec9a4faa7df..0c55ba0739d 100644 --- a/TOF/TOFbaseLinkDef.h +++ b/TOF/TOFbaseLinkDef.h @@ -35,6 +35,9 @@ #pragma link C++ class AliTOFcalibHisto+; #pragma link C++ class AliTOFArray+; #pragma link C++ class AliTOFDaConfigHandler+; +#pragma link C++ class AliTOFDeltaBCOffset+; +#pragma link C++ class AliTOFCTPLatency+; +#pragma link C++ class AliTOFT0Fill+; #endif diff --git a/TOF/libTOFbase.pkg b/TOF/libTOFbase.pkg index 7cf63dfa444..7442382f1d6 100644 --- a/TOF/libTOFbase.pkg +++ b/TOF/libTOFbase.pkg @@ -28,6 +28,9 @@ SRCS = AliTOFGeometry.cxx \ AliTOFcalibHisto.cxx \ AliTOFArray.cxx \ AliTOFDaConfigHandler.cxx \ + AliTOFDeltaBCOffset.cxx \ + AliTOFCTPLatency.cxx \ + AliTOFT0Fill.cxx \ HDRS:= $(SRCS:.cxx=.h) -- 2.43.0