From 53ad561bd330c9bc96ca2a0356de36e38db15a51 Mon Sep 17 00:00:00 2001 From: cvetan Date: Thu, 27 Jan 2011 13:25:11 +0000 Subject: [PATCH 1/1] Introduction of the correction for signal-saturation in PbPb runs. The reco-param is also changed in order to make a sum of the charge in -1/+6 25ns slices. --- .../Calib/RecoParam/Run0_999999999_v0_s0.root | Bin 2847 -> 2870 bytes .../Saturation/Run0_999999999_v0_s0.root | Bin 4577 -> 4577 bytes VZERO/AliVZEROReconstructor.cxx | 10 +++++++++- VZERO/AliVZEROReconstructor.h | 3 ++- VZERO/MakeVZERORecoParam.C | 1 + VZERO/MakeVZEROSaturationEntry.C | 6 +++--- 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/OCDB/VZERO/Calib/RecoParam/Run0_999999999_v0_s0.root b/OCDB/VZERO/Calib/RecoParam/Run0_999999999_v0_s0.root index 480616ced91d7864a4db9df55bb4b487ec0261e5..0fd2ddd93d722f5d2e2564990de5e40d886432cf 100644 GIT binary patch delta 2347 zcmY*bX*3jU6rLGl-=i_4lr7stjBQF(W8Y=I5r!{PS!%Ky$_QgA`&h@$XtA$j89Ab{ zhM}a8eM_UPMT&3KukStQIrqNrdG7u3-1nUO__(#OCg) z;!okK(DenEDH}bn<6~@qYThSdYm9?nL>5WkzwBjba*`r>;dW1tQ{k$n|l@{uFAp&mn+Xbx~tH#UyvVQAEW7HaX zc>G&=Eb`D^TWD_6^HYrQ&B0d18CU8=k@$3Gf$7QmND`%5sct&=^Bu-oG4HDd8u7Ze z!Si$Oi8`!vXb2bf!qcp?@URJDLfo ziP#T<;X&+xP+_K6G&^&z6Z*oTPRrf*M$)h76+ocJe?H09&_|VAnHX@^C&M`tvJc2f zl`rcC(|0PV)Im%6cc<-RO-@IGMVd}WM!s%deZ;NFC*CaSz0}8h#<~qh4S4S^L_={( z4KNtNx7vQR;l2%=`0_3=7a^}NNAj>zMY!wYCk^GzqTApKBND!_#PuESzE$MV4J}Kf z;x$n}#%yw-wdQt4@BZ0+9f;A56_nGzwL$*$AMtMLd!UkecP?Nd2l*$$ z(7k^7Im_CVtfZj7NOh?a;eyJ@x!7L|H!lbMV%6m2@4&D@>ZWDwXp(m(Kadjh8DP3>k zYP2R&-daU2BK&B+3GjLm+>Quw{ANX+D%>EB-eWt*x6xK!HT<2U z_&i#kLhm?>wY<^XN7XhJV?$E+e2(FDT;o}ZPb#+?aizRVYo*oV#b!v$qT1ZqJ^G0H z0&dWeA*`GR zvNh^-$YRyX6E5f`@$u@42egh{P`-~&waq`T*mZ24ZDiea3!JTw5ozCYMZYu9i` ztlXMG6WgzQzEc+s5J4oeY&WOIVel*-ZW`53zf!W-K3kh9H8>VQ-Fv?(Q}%ge5;y@DIpOz4_z%d2G{A z=fHlp=2r~5)a5H+sUyOM{hyGeC}3a2J(sY}0)6!yh4RH0VUHpt0J5dh+EhV!U`P>y^=86M(c1`w)N|tcpm>5PcGPklX1(xXT z4F1)z^im6(v82zj_W+!H6?I%+Ed25$YiEu5`1+t?mu{6|-1LpEeNt`MMke3S{lvHZ zcEX#_%;NqLcXk@6!TYGuyhT}ryR+|mM8T|2b!V=nr*UK$U%k*dNr~LGFunUNVWnD_ z!kKrszf05<9z(i}sq-rn2LlkpX$UvSdaIt;_{I4cSuA*}JX|$l3K|1r&DV?r%G5i5 zX@!j|x59?t8Ql~(KkBFNFDg(eE`GR;7UcinK|`>sSa&yG_TC$>T$>+$MeZZ?Jh$+? zyB>O4eC6^|Ip4~Qdgo9jf`(RON)AO*PUa)U$SbgXGim$XA^Sa2w&rB*o1g0F-O}iW z<7N`8BsT}}+stxTc9%eNkIe@*#5nZ`$5-DczYB*4_&~piJFFQ+s_*aSV(!Q^ljcB&ETe>xsd`71yJ2`#z>v! zOd+>v4PQ`n#q2`l^)g!&z^l9Rt@Hbjm2dNFF;#Y~3`9-;_V%ag-5!sa?3JO7)kPCmhL&9h# zktbF_Z27fH!V4FR_D_BHsJo4>zo&2i&agX7x0QK+xB~cshsP@KIikv!Nt~X5G7YaE zf|+vouBnh%8To2y*i>1iu$tBAWZ!b_$#ab%#qFW}&_$Sm_K;i%asLxb>K4T{oo9No z1sXWc8ZJ?C>4jldJ1k%TW6smGRN7+{7}|e`WaPcr$}CY0?;T}N+?+NKuvA-8$O6{i zPiq+b5Go+qfo-%sYmy1J;OuGHXo@d`PAB72GJ18)+p2A&u9k*-3)rKrYEMK1{XhHY zaHactel?nZZyNY5za^fAYLDBR*=E759}1{c(WXeP*LbC~f+Y{QU7<);1)UIuKGJvA zCg)ips!f2plIdjJ3c delta 2330 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 Z^Bxv99u{y~Jtj~BVb}@kLl}jE1pw4(eN+Gd delta 823 zcmaE;{7`vbDjjR~IO8N95wv~B-D5=;zG%;=`1EM{h1qH`e?xwpyO7(dB4zt^`k!St z=guupyLaxVRZouIjZygI(dK*la^o_SZQEYGzdkuDNBGzAv*zl{Ojm7O zajnD3*I&52?fk4vG(NX#Xh6X`w9Em{F#3i{1iP26y^d7@Aj{|@JDV! z{QVEVFILw7fA;5e?DP1rIq4V7YhTB!t@|}ypNZAyKgW#!Odib4d=t3XWE5n1EF8Qf z3L3T;JYZOvc!2TJ;Rfa<9gOTA!p*z|jgu3ZmAPdUe0j_cxXuEqn!J%&nd1h-^o%5+ z%E@<_l~@v(W0p;Rz^qgc(Xzoq7-+B>&|qJn!Lw%UW7JUpDgNqhT79F(%c9@gekc8n zv0QVsx_ECdGka{sg;w{f#N_AxG4s}IK7IIn{_}0yj(RUDZ#<#CJNjXju3mngP4A`x z<1s6f)luemU=WyQh7`XX(3dc}nFEne=|U z>(+ACE#&LtBiGApGgC4@E5+DGetBinContent(i+1)+ kV0Offset); } + + AliCDBEntry *entry5 = AliCDBManager::Instance()->Get("VZERO/Calib/Saturation"); + if (!entry5) AliFatal("Saturation entry is not found in OCDB !"); + fSaturationCorr = (TObjArray*)entry5->GetObject(); } @@ -350,7 +355,10 @@ void AliVZEROReconstructor::FillESD(TTree* digitsTree, TTree* /*clustersTree*/, aBBflag[pmNumber],aBGflag[pmNumber])); }; - mult[pmNumber] = adc[pmNumber]*fCalibData->GetMIPperADC(pmNumber); + TF1 *saturationFunc = (TF1*)fSaturationCorr->UncheckedAt(pmNumber); + if (!saturationFunc) AliFatal(Form("Saturation correction for channel %d is not found!",pmNumber)); + AliDebug(1,Form("Saturation PM=%d %f %f",pmNumber,adc[pmNumber],saturationFunc->Eval(adc[pmNumber]))); + mult[pmNumber] = saturationFunc->Eval(adc[pmNumber])*fCalibData->GetMIPperADC(pmNumber); // Fill ESD friend object for (Int_t iEv = 0; iEv < AliESDVZEROfriend::kNEvOfInt; iEv++) { diff --git a/VZERO/AliVZEROReconstructor.h b/VZERO/AliVZEROReconstructor.h index 4252918e872..d653513d304 100644 --- a/VZERO/AliVZEROReconstructor.h +++ b/VZERO/AliVZEROReconstructor.h @@ -71,13 +71,14 @@ private: AliVZEROCalibData* fCalibData; //! calibration data Float_t fTimeOffset[64]; //! HPTDC time offsets channel by channel TF1* fTimeSlewing; //! Function for time slewing correction + TObjArray* fSaturationCorr; //! Array with functions for correcting the signal saturation Int_t fCollisionMode; // =0->p-p, =1->A-A Float_t fBeamEnergy; // beam energy mutable TClonesArray *fDigitsArray; // clones-array for ConvertDigits() and FillESD() - ClassDef(AliVZEROReconstructor, 2) // class for the VZERO reconstruction + ClassDef(AliVZEROReconstructor, 3) // class for the VZERO reconstruction }; #endif diff --git a/VZERO/MakeVZERORecoParam.C b/VZERO/MakeVZERORecoParam.C index 42b37c1ecf8..2c95a7cf751 100644 --- a/VZERO/MakeVZERORecoParam.C +++ b/VZERO/MakeVZERORecoParam.C @@ -27,6 +27,7 @@ void MakeVZERORecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMu } { AliVZERORecoParam * vzeroRecoParam = new AliVZERORecoParam; + vzeroRecoParam->SetNPreClocks(6); vzeroRecoParam->SetEventSpecie(AliRecoParam::kHighMult); recoParamArray->AddLast(vzeroRecoParam); } diff --git a/VZERO/MakeVZEROSaturationEntry.C b/VZERO/MakeVZEROSaturationEntry.C index 6daede14f21..ce96525206e 100644 --- a/VZERO/MakeVZEROSaturationEntry.C +++ b/VZERO/MakeVZEROSaturationEntry.C @@ -13,13 +13,13 @@ void MakeVZEROSaturationEntry(const char *cdbUri = "local://$ALICE_ROOT/OCDB", // x -> x + alpha * ( x - beta ) // alpha and beta are calculated for each channel, and are // listed below - Double_t alpha[64] = { 7.94e-01 , 8.19e-01 , 7.98e-01 , 7.76e-01 , 6.96e-01 , 8.27e-01 , 6.81e-01 , 5.34e-01 , 6.52e-01 , 6.57e-01 , 5.76e-01 , 5.33e-01 , 4.47e-01 , 2.98e-01 , 4.59e-01 , 5.51e-01 , 5.01e-01 , 4.34e-01 , 3.98e-01 , 3.44e-01 , 1.42e-01 , 3.54e-01 , 0.00e+00 , 1.94e-01 , 1.68e-01 , 2.76e-01 , 2.38e-01 , 9.10e-02 , 2.45e-01 , 2.67e-01 , 2.26e-01 , 1.14e-01 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 1.68e-01 , 0.00e+00 , 4.63e-01 , 0.00e+00 , 6.47e-02 , 0.00e+00 , 0.00e+00 , 6.32e-02 }; - Double_t beta[64] = { 1.42e+03 , 1.41e+03 , 1.42e+03 , 1.38e+03 , 1.50e+03 , 1.52e+03 , 1.47e+03 , 1.55e+03 , 1.34e+03 , 1.36e+03 , 1.38e+03 , 1.29e+03 , 1.52e+03 , 1.49e+03 , 1.42e+03 , 1.52e+03 , 1.39e+03 , 1.40e+03 , 1.38e+03 , 1.29e+03 , 1.28e+03 , 1.47e+03 , 0.00e+00 , 1.46e+03 , 1.39e+03 , 1.40e+03 , 1.41e+03 , 1.45e+03 , 1.51e+03 , 1.57e+03 , 1.52e+03 , 1.38e+03 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 1.49e+03 , 0.00e+00 , 1.32e+03 , 0.00e+00 , 1.37e+03 , 0.00e+00 , 0.00e+00 , 1.34e+03 }; + Double_t alpha[64] = { 7.70e-01 , 7.97e-01 , 7.64e-01 , 7.80e-01 , 6.61e-01 , 7.46e-01 , 6.59e-01 , 6.69e-01 , 6.40e-01 , 6.11e-01 , 6.25e-01 , 4.51e-01 , 5.72e-01 , 3.34e-01 , 6.23e-01 , 5.92e-01 , 5.28e-01 , 4.18e-01 , 3.56e-01 , 3.39e-01 , 4.91e-01 , 3.36e-01 , 9.48e-02 , 1.86e-01 , 1.72e-01 , 2.65e-01 , 2.15e-01 , 1.24e-01 , 2.62e-01 , 2.57e-01 , 2.21e-01 , 1.11e-01 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 1.74e-01 , 0.00e+00 , 1.69e-01 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 1.45e-01 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 5.62e-02 , 0.00e+00 , 0.00e+00 , 1.46e-01 }; + Double_t beta[64] = { 1.28e+03 , 1.28e+03 , 1.30e+03 , 1.26e+03 , 1.28e+03 , 1.28e+03 , 1.28e+03 , 1.34e+03 , 1.22e+03 , 1.26e+03 , 1.28e+03 , 1.14e+03 , 1.31e+03 , 1.29e+03 , 1.22e+03 , 1.27e+03 , 1.31e+03 , 1.31e+03 , 1.30e+03 , 1.21e+03 , 1.26e+03 , 1.30e+03 , 1.15e+03 , 1.30e+03 , 1.30e+03 , 1.32e+03 , 1.32e+03 , 1.37e+03 , 1.40e+03 , 1.43e+03 , 1.38e+03 , 1.28e+03 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 1.15e+03 , 0.00e+00 , 1.16e+03 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 1.32e+03 , 0.00e+00 , 0.00e+00 , 0.00e+00 , 1.21e+03 , 0.00e+00 , 0.00e+00 , 1.30e+03 }; TObjArray *arr = new TObjArray(64); arr->SetOwner(1); for(Int_t i = 0; i < 64; ++i) { - TF1 *saturation = new TF1(Form("VZEROSaturationCh_%d",i),"x < [1] ? x : x + [0] * (x - [1])",0.,2000.); + TF1 *saturation = new TF1(Form("VZEROSaturationCh_%d",i),"x < [1] ? x : x + [0] * (x - [1])",0.,2500.); if (default) { saturation->SetParameter(0,0.0); saturation->SetParameter(1,0.0); -- 2.43.0