Introduction of the correction for signal-saturation in PbPb runs. The reco-param...
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 27 Jan 2011 13:25:11 +0000 (13:25 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 27 Jan 2011 13:25:11 +0000 (13:25 +0000)
OCDB/VZERO/Calib/RecoParam/Run0_999999999_v0_s0.root
OCDB/VZERO/Calib/Saturation/Run0_999999999_v0_s0.root
VZERO/AliVZEROReconstructor.cxx
VZERO/AliVZEROReconstructor.h
VZERO/MakeVZERORecoParam.C
VZERO/MakeVZEROSaturationEntry.C

index 480616c..0fd2ddd 100644 (file)
Binary files a/OCDB/VZERO/Calib/RecoParam/Run0_999999999_v0_s0.root and b/OCDB/VZERO/Calib/RecoParam/Run0_999999999_v0_s0.root differ
index 5e66b88..5c58139 100644 (file)
Binary files a/OCDB/VZERO/Calib/Saturation/Run0_999999999_v0_s0.root and b/OCDB/VZERO/Calib/Saturation/Run0_999999999_v0_s0.root differ
index 4dee93c..e48b635 100644 (file)
@@ -53,6 +53,7 @@ AliVZEROReconstructor:: AliVZEROReconstructor(): AliReconstructor(),
                         fESDVZEROfriend(0x0),
                         fCalibData(NULL),
                         fTimeSlewing(NULL),
+                        fSaturationCorr(NULL),
                         fCollisionMode(0),
                         fBeamEnergy(0.),
                         fDigitsArray(0)
@@ -94,6 +95,10 @@ AliVZEROReconstructor:: AliVZEROReconstructor(): AliReconstructor(),
                       delays->GetBinContent(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++) {
index 4252918..d653513 100644 (file)
@@ -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
index 42b37c1..2c95a7c 100644 (file)
@@ -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);
   }
index 6daede1..ce96525 100644 (file)
@@ -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);