]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - VZERO/AliVZEROReconstructor.cxx
Adding ProtonLambda HBT train macros
[u/mrichter/AliRoot.git] / VZERO / AliVZEROReconstructor.cxx
index 191939521bd758930750a153fa4b74c76c41de9a..412dac43b905abcb9498674673a64f0f45a4f849 100644 (file)
@@ -55,6 +55,7 @@ AliVZEROReconstructor:: AliVZEROReconstructor(): AliReconstructor(),
                         fTriggerData(NULL),
                         fTimeSlewing(NULL),
                         fSaturationCorr(NULL),
+                        fEqFactors(NULL),
                         fCollisionMode(0),
                         fBeamEnergy(0.),
                         fDigitsArray(0)
@@ -104,6 +105,10 @@ AliVZEROReconstructor:: AliVZEROReconstructor(): AliReconstructor(),
   AliCDBEntry *entry6 = AliCDBManager::Instance()->Get("VZERO/Trigger/Data");
   if (!entry6) AliFatal("VZERO trigger config data is not found in OCDB !");
   fTriggerData = (AliVZEROTriggerData*)entry6->GetObject();
+
+  AliCDBEntry *entry7 = AliCDBManager::Instance()->Get("VZERO/Calib/EqualizationFactors");
+  if (!entry7) AliFatal("VZERO equalization factors are not found in OCDB !");
+  fEqFactors = (TH1F*)entry7->GetObject();
 }
 
 
@@ -346,6 +351,11 @@ void AliVZEROReconstructor::FillESD(TTree* digitsTree, TTree* /*clustersTree*/,
       AliWarning("V0C trigger charge not found in digits tree UserInfo!");
   }
 
+  fESDVZERO->SetTriggerChargeA(chargeA);
+  fESDVZERO->SetTriggerChargeC(chargeC);
+  fESDVZERO->SetTriggerBits(triggerInputs);
+  fESDVZERO->SetBit(AliESDVZERO::kTriggerChargeBitsFilled,kTRUE);
+
   Int_t nEntries = (Int_t)digitsTree->GetEntries();
   for (Int_t e=0; e<nEntries; e++) {
     digitsTree->GetEvent(e);
@@ -393,11 +403,16 @@ void AliVZEROReconstructor::FillESD(TTree* digitsTree, TTree* /*clustersTree*/,
        width[pmNumber] =  digit->Width();
 
        if (adc[pmNumber] > 0) {
-         AliDebug(1,Form("PM = %d ADC = %f TDC %f (%f)   Int %d (%d %d %d %d %d)    %f %f   %f %f    %d %d",pmNumber, adc[pmNumber],
+         AliDebug(1,Form("PM = %d ADC = %.2f (%.2f) TDC %.2f (%.2f)   Int %d (%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d)    %.2f %.2f   %.2f %.2f    %d %d",pmNumber, adc[pmNumber],
+                      digit->ChargeADC(11)+digit->ChargeADC(10)+digit->ChargeADC(9)+digit->ChargeADC(8)+
+                      digit->ChargeADC(7)+digit->ChargeADC(6)+digit->ChargeADC(5)+digit->ChargeADC(4)-
+                      4.*fCalibData->GetPedestal(pmNumber)-4.*fCalibData->GetPedestal(pmNumber+64),
                          digit->Time(),time[pmNumber],
                          integrator,
+                         digit->ChargeADC(0),digit->ChargeADC(1),digit->ChargeADC(2),digit->ChargeADC(3),digit->ChargeADC(4),digit->ChargeADC(5),digit->ChargeADC(6),digit->ChargeADC(7),
                          digit->ChargeADC(8),digit->ChargeADC(9),digit->ChargeADC(10),
                          digit->ChargeADC(11),digit->ChargeADC(12),
+                         digit->ChargeADC(13),digit->ChargeADC(14),digit->ChargeADC(15),digit->ChargeADC(16),digit->ChargeADC(17),digit->ChargeADC(18),digit->ChargeADC(19),digit->ChargeADC(20),
                          fCalibData->GetPedestal(pmNumber),fCalibData->GetSigma(pmNumber),
                          fCalibData->GetPedestal(pmNumber+64),fCalibData->GetSigma(pmNumber+64),
                          aBBflag[pmNumber],aBGflag[pmNumber]));
@@ -439,6 +454,20 @@ void AliVZEROReconstructor::FillESD(TTree* digitsTree, TTree* /*clustersTree*/,
   if (esd) { 
      AliDebug(1, Form("Writing VZERO data to ESD tree"));
      esd->SetVZEROData(fESDVZERO);
+     const AliESDRun *esdRun = esd->GetESDRun();
+     if (esdRun) {
+       Float_t factors[64];
+       Float_t factorSum = 0;
+       for(Int_t i = 0; i < 64; ++i) {
+        factors[i] = fEqFactors->GetBinContent(i+1)*fCalibData->GetMIPperADC(i);
+        factorSum += factors[i];
+       }
+       for(Int_t i = 0; i < 64; ++i) factors[i] *= (64./factorSum);
+       
+       esd->SetVZEROEqFactors(factors);
+     }
+     else
+       AliError("AliESDRun object is not available! Cannot write the equalization factors!");
   }
 
   if (esd) {