]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliEMCALDigitizer.cxx
Bug fix, the equalized sums were completely wrong.
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALDigitizer.cxx
index 5824f20a5894ba24ade40bbc0dd4f86f28a91ad3..9fc6368d5cb29b7a5c8b27e7475b21ab82a23736 100644 (file)
@@ -307,6 +307,7 @@ void AliEMCALDigitizer::Digitize(Int_t event)
   if (!fSDigitizer) fSDigitizer = new AliEMCALSDigitizer(rl->GetFileName().Data());
   fSDigitizer->SetEventRange(0, -1) ;
   
+  //-------------------------------------------------------
   //take all the inputs to add together and load the SDigits
   TObjArray * sdigArray = new TObjArray(fInput) ;
   sdigArray->AddAt(emcalLoader->SDigits(), 0) ;
@@ -320,80 +321,89 @@ void AliEMCALDigitizer::Digitize(Int_t event)
     
     AliRunLoader *  rl2 = AliRunLoader::GetRunLoader(tempo) ;
     
-    if (rl2==0)
-    rl2 = AliRunLoader::Open(fInputFileNames[i], tempo) ;
+    if (!rl2)
+      rl2 = AliRunLoader::Open(fInputFileNames[i], tempo) ;
+    
+    if(!rl2)
+    {
+      AliFatal("Run Loader of second event not available!");
+      return; // not needed but in case coverity complains ...
+    }
     
     if (fDigInput)
-    readEvent = dynamic_cast<AliStream*>(fDigInput->GetInputStream(i))->GetCurrentEventNumber() ;
+      readEvent = dynamic_cast<AliStream*>(fDigInput->GetInputStream(i))->GetCurrentEventNumber() ;
+    
     Info("Digitize", "Adding event %d from input stream %d %s %s", readEvent, i, fInputFileNames[i].Data(), tempo.Data()) ;
+    
     rl2->LoadSDigits();
     //     rl2->LoadDigits();
     rl2->GetEvent(readEvent);
-    if(rl2->GetDetectorLoader("EMCAL"))
+    
+    if(!rl2->GetDetectorLoader("EMCAL"))
     {
-      AliEMCALLoader *emcalLoader2 = dynamic_cast<AliEMCALLoader*>(rl2->GetDetectorLoader("EMCAL"));
-      
-      if(emcalLoader2)
-      {
-        //Merge 2 simulated sdigits
-        if(emcalLoader2->SDigits()){
-          TClonesArray* sdigits2 = emcalLoader2->SDigits();
-          sdigArray->AddAt(sdigits2, i) ;
-          // Check if first sdigit is of embedded type, if so, handle the sdigits differently:
-          // do not smear energy of embedded, do not add noise to any sdigits
-          if(sdigits2->GetEntriesFast()>0)
-          {
-            //printf("Merged digit type: %d\n",dynamic_cast<AliEMCALDigit*> (sdigits2->At(0))->GetType());
-            AliEMCALDigit * digit2 = dynamic_cast<AliEMCALDigit*> (sdigits2->At(0));
-            if( digit2 && digit2->GetType()==AliEMCALDigit::kEmbedded ) embed = kTRUE;
-          }
-        }
-        
-      }//loader2
-      else  AliFatal("EMCAL Loader of second event not available!");
-      
+      AliFatal("Loader of second input not found");
+      return; // not needed but in case coverity complains ...
     }
-    else Fatal("Digitize", "Loader of second input not found");
+    
+    AliEMCALLoader *emcalLoader2 = dynamic_cast<AliEMCALLoader*>(rl2->GetDetectorLoader("EMCAL"));
+    
+    if(!emcalLoader2)
+    {
+      AliFatal("EMCAL Loader of second event not available!");
+      return; // not needed but in case coverity complains ...
+    }
+
+    //Merge 2 simulated sdigits
+    if(!emcalLoader2->SDigits()) continue;
+    
+    TClonesArray* sdigits2 = emcalLoader2->SDigits();
+    sdigArray->AddAt(sdigits2, i) ;
+    
+    // Check if first sdigit is of embedded type, if so, handle the sdigits differently:
+    // do not smear energy of embedded, do not add noise to any sdigits
+    if( sdigits2->GetEntriesFast() <= 0 ) continue;
+    
+    //printf("Merged digit type: %d\n",dynamic_cast<AliEMCALDigit*> (sdigits2->At(0))->GetType());
+    AliEMCALDigit * digit2 = dynamic_cast<AliEMCALDigit*> (sdigits2->At(0));
+    if( digit2 && digit2->GetType()==AliEMCALDigit::kEmbedded ) embed = kTRUE;
+    
   }// input loop
   
+  //--------------------------------
   //Find the first tower with signal
   Int_t nextSig = nEMC + 1 ;
   TClonesArray * sdigits ;
-  for(i = 0 ; i < fInput ; i++){
+  for(i = 0 ; i < fInput ; i++)
+  {
     if(i > 0 && embed) continue;
+    
     sdigits = dynamic_cast<TClonesArray *>(sdigArray->At(i)) ;
-    if(sdigits)
-    {
-      if (sdigits->GetEntriesFast() )
-      {
-        AliEMCALDigit *sd = dynamic_cast<AliEMCALDigit *>(sdigits->At(0));
-        if(sd)
-        {
-          Int_t curNext = sd->GetId() ;
-          if(curNext < nextSig)
-          nextSig = curNext ;
-          AliDebug(1,Form("input %i : #sdigits %i \n",
-                          i, sdigits->GetEntriesFast()));
-          
-        }//First entry is not NULL
-        else
-        {
-          AliDebug(1, "NULL sdigit pointer");
-          continue;
-        }
-      }//There is at least one entry
-      else
-      {
-        AliDebug(1, "NULL sdigits array");
-        continue;
-      }
-    }// SDigits array exists
-    else
+    if(!sdigits)
     {
       AliDebug(1,"Null sdigit pointer");
       continue;
     }
+    
+    if (sdigits->GetEntriesFast() <= 0 )
+    {
+      AliDebug(1, "No sdigits entries");
+      continue;
+    }
+    
+    AliEMCALDigit *sd = dynamic_cast<AliEMCALDigit *>(sdigits->At(0));
+    if(!sd)
+    {
+      AliDebug(1, "NULL sdigit pointer");
+      continue;
+    }
+    
+    Int_t curNext = sd->GetId() ;
+    if(curNext < nextSig)
+    nextSig = curNext ;
+    AliDebug(1,Form("input %i : #sdigits %i \n",i, sdigits->GetEntriesFast()));
+    
   }// input loop
+  
   AliDebug(1,Form("FIRST tower with signal %i \n", nextSig));
   
   TArrayI index(fInput) ;
@@ -402,6 +412,7 @@ void AliEMCALDigitizer::Digitize(Int_t event)
   AliEMCALDigit * digit ;
   AliEMCALDigit * curSDigit ;
   
+  //---------------------------------------------
   //Put Noise contribution, smear time and energy
   Float_t timeResolution = 0;
   Int_t absID = -1 ;
@@ -419,115 +430,111 @@ void AliEMCALDigitizer::Digitize(Int_t event)
     //look if we have to add signal?
     digit = dynamic_cast<AliEMCALDigit *>(digits->At(absID)); // absID-1->absID
     
-    if (digit)
+    if (!digit)
+    {
+      AliDebug(1,"Digit pointer is null");
+      continue;
+    }
+    
+    if(absID==nextSig)
     {
-      if(absID==nextSig)
+      // Calculate time as time of the largest digit
+      Float_t time = digit->GetTime() ;
+      Float_t aTime= digit->GetAmplitude() ;
+      
+      // loop over input
+      Int_t nInputs = fInput;
+      if(embed) nInputs = 1; // In case of embedding, merge later real digits, do not smear energy and time of data
+      for(i = 0; i< nInputs ; i++)
       {
-        // Calculate time as time of the largest digit
-        Float_t time = digit->GetTime() ;
-        Float_t aTime= digit->GetAmplitude() ;
-        
-        // loop over input
-        Int_t nInputs = fInput;
-        if(embed) nInputs = 1; // In case of embedding, merge later real digits, do not smear energy and time of data
-        for(i = 0; i< nInputs ; i++)
-        {  //loop over (possible) merge sources
-          TClonesArray* sdtclarr = dynamic_cast<TClonesArray *>(sdigArray->At(i));
-          if(sdtclarr) {
-            Int_t sDigitEntries = sdtclarr->GetEntriesFast();
-            
-            if(sDigitEntries > index[i] )
-            curSDigit = dynamic_cast<AliEMCALDigit*>(sdtclarr->At(index[i])) ;
-            else
-            curSDigit = 0 ;
-            
-            //May be several digits will contribute from the same input
-            while(curSDigit && (curSDigit->GetId() == absID))
-            {
-              //Shift primary to separate primaries belonging different inputs
-              Int_t primaryoffset ;
-              if(fDigInput)
-              primaryoffset = fDigInput->GetMask(i) ;
-              else
-              primaryoffset = i ;
-              curSDigit->ShiftPrimary(primaryoffset) ;
-              
-              if(curSDigit->GetAmplitude()>aTime)
-              {
-                aTime = curSDigit->GetAmplitude();
-                time  = curSDigit->GetTime();
-              }
-              
-              *digit = *digit + *curSDigit ;  //adds amplitudes of each digit
-              
-              index[i]++ ;
-              
-              if( sDigitEntries > index[i] )
-              curSDigit = dynamic_cast<AliEMCALDigit*>(sdtclarr->At(index[i])) ;
-              else
-              curSDigit = 0 ;
-            }// while
-          }// source exists
-        }// loop over merging sources
-        
-        
-        //Here we convert the summed amplitude to an energy in GeV only for simulation or mixing of simulations
-        energy = fSDigitizer->Calibrate(digit->GetAmplitude()) ; // GeV
-        
-        // add fluctuations for photo-electron creation
-        // corrected fluctuations after comparison with beam test, Paraskevi Ganoti (06/11/2011)
-        Float_t fluct = static_cast<Float_t>((energy*fMeanPhotonElectron)/fGainFluctuations);
-        energy       *= static_cast<Float_t>(gRandom->Poisson(fluct)) / fluct ;
-        
-        //calculate and set time
-        digit->SetTime(time) ;
-        
-        //Find next signal module
-        nextSig = nEMC + 1 ;
-        for(i = 0 ; i < nInputs ; i++){
-          sdigits = dynamic_cast<TClonesArray *>(sdigArray->At(i)) ;
+        //loop over (possible) merge sources
+        TClonesArray* sdtclarr = dynamic_cast<TClonesArray *>(sdigArray->At(i));
+        if(sdtclarr)
+        {
+          Int_t sDigitEntries = sdtclarr->GetEntriesFast();
+          
+          if(sDigitEntries > index[i] ) curSDigit = dynamic_cast<AliEMCALDigit*>(sdtclarr->At(index[i])) ;
+          else                          curSDigit = 0 ;
           
-          if(sdigits){
-            Int_t curNext = nextSig ;
-            if(sdigits->GetEntriesFast() > index[i])
+          //May be several digits will contribute from the same input
+          while(curSDigit && (curSDigit->GetId() == absID))
+          {
+            //Shift primary to separate primaries belonging different inputs
+            Int_t primaryoffset = i ;
+            if(fDigInput) primaryoffset = fDigInput->GetMask(i) ;
+            curSDigit->ShiftPrimary(primaryoffset) ;
+            
+            if(curSDigit->GetAmplitude()>aTime)
             {
-              AliEMCALDigit * tmpdigit = dynamic_cast<AliEMCALDigit *>(sdigits->At(index[i]));
-              if(tmpdigit)
-              {
-                curNext = tmpdigit->GetId() ;
-              }
+              aTime = curSDigit->GetAmplitude();
+              time  = curSDigit->GetTime();
             }
-            if(curNext < nextSig) nextSig = curNext ;
-          }// sdigits exist
-        } // input loop
-        
-      }//absID==nextSig
+            
+            *digit = *digit + *curSDigit ;  //adds amplitudes of each digit
+            
+            index[i]++ ;
+            
+            if( sDigitEntries > index[i] ) curSDigit = dynamic_cast<AliEMCALDigit*>(sdtclarr->At(index[i])) ;
+            else                           curSDigit = 0 ;
+          }// while
+        }// source exists
+      }// loop over merging sources
       
-      // add the noise now, no need for embedded events with real data
-      if(!embed)
-      energy += gRandom->Gaus(0., fPinNoise) ;
+      //Here we convert the summed amplitude to an energy in GeV only for simulation or mixing of simulations
+      energy = fSDigitizer->Calibrate(digit->GetAmplitude()) ; // GeV
+      
+      // add fluctuations for photo-electron creation
+      // corrected fluctuations after comparison with beam test, Paraskevi Ganoti (06/11/2011)
+      Float_t fluct = static_cast<Float_t>((energy*fMeanPhotonElectron)/fGainFluctuations);
+      energy       *= static_cast<Float_t>(gRandom->Poisson(fluct)) / fluct ;
       
-      // JLK 26-June-2008
-      //Now digitize the energy according to the fSDigitizer method,
-      //which merely converts the energy to an integer.  Later we will
-      //check that the stored value matches our allowed dynamic ranges
-      digit->SetAmplitude(fSDigitizer->Digitize(energy)) ;
+      //calculate and set time
+      digit->SetTime(time) ;
       
-      //Set time resolution with final energy
-      timeResolution = GetTimeResolution(energy);
-      digit->SetTime(gRandom->Gaus(digit->GetTime(),timeResolution) ) ;
-      AliDebug(10,Form(" absID %5i energy %f nextSig %5i\n",
-                       absID, energy, nextSig));
-      //Add delay to time
-      digit->SetTime(digit->GetTime()+fTimeDelay) ;
+      //Find next signal module
+      nextSig = nEMC + 1 ;
+      for(i = 0 ; i < nInputs ; i++)
+      {
+        sdigits = dynamic_cast<TClonesArray *>(sdigArray->At(i)) ;
+        
+        if(sdigits)
+        {
+          Int_t curNext = nextSig ;
+          if(sdigits->GetEntriesFast() > index[i])
+          {
+            AliEMCALDigit * tmpdigit = dynamic_cast<AliEMCALDigit *>(sdigits->At(index[i]));
+            if ( tmpdigit ) curNext = tmpdigit->GetId() ;
+          }
+          
+          if(curNext < nextSig) nextSig = curNext ;
+        }// sdigits exist
+      } // input loop
       
-    }// Digit pointer exists
-    else AliDebug(1,"Digit pointer is null");
+    }//absID==nextSig
+    
+    // add the noise now, no need for embedded events with real data
+    if(!embed)
+      energy += gRandom->Gaus(0., fPinNoise) ;
+    
+    // JLK 26-June-2008
+    //Now digitize the energy according to the fSDigitizer method,
+    //which merely converts the energy to an integer.  Later we will
+    //check that the stored value matches our allowed dynamic ranges
+    digit->SetAmplitude(fSDigitizer->Digitize(energy)) ;
+    
+    //Set time resolution with final energy
+    timeResolution = GetTimeResolution(energy);
+    digit->SetTime(gRandom->Gaus(digit->GetTime(),timeResolution) ) ;
+    AliDebug(10,Form(" absID %5i energy %f nextSig %5i\n",
+                     absID, energy, nextSig));
+    //Add delay to time
+    digit->SetTime(digit->GetTime()+fTimeDelay) ;
     
   } // for(absID = 0; absID < nEMC; absID++)
   
+  //---------------------------------------------------------
   //Embed simulated amplitude (and time?) to real data digits
-  if(embed)
+  if ( embed )
   {
     for(Int_t input = 1; input<fInput; input++)
     {
@@ -541,37 +548,37 @@ void AliEMCALDigitizer::Digitize(Int_t event)
       for(Int_t i2 = 0 ; i2 < realDigits->GetEntriesFast() ; i2++)
       {
         AliEMCALDigit * digit2 = dynamic_cast<AliEMCALDigit*>( realDigits->At(i2) ) ;
-        if(digit2)
-        {
-          digit = dynamic_cast<AliEMCALDigit*>( digits->At(digit2->GetId()) ) ;
-          if(digit)
-          {
-            // Put the embedded cell energy in same units as simulated sdigits -> transform to energy units
-            // and multiply to get a big int.
-            Float_t time2 = digit2->GetTime();
-            Float_t e2    = digit2->GetAmplitude();
-            CalibrateADCTime(e2,time2,digit2->GetId());
-            Float_t amp2 = fSDigitizer->Digitize(e2);
-            
-            Float_t e0    = digit ->GetAmplitude();
-            if(e0>0.01)
-            AliDebug(1,Form("digit 1: Abs ID %d, amp %f, type %d, time %e; digit2: Abs ID %d, amp %f, type %d, time %e\n",
-                            digit ->GetId(),digit ->GetAmplitude(), digit ->GetType(), digit->GetTime(),
-                            digit2->GetId(),amp2,                   digit2->GetType(), time2           ));
-            
-            // Sum amplitudes, change digit amplitude
-            digit->SetAmplitude( digit->GetAmplitude() + amp2);
-            // Rough assumption, assign time of the largest of the 2 digits,
-            // data or signal to the final digit.
-            if(amp2 > digit->GetAmplitude())  digit->SetTime(time2);
-            //Mark the new digit as embedded
-            digit->SetType(AliEMCALDigit::kEmbedded);
-            
-            if(digit2->GetAmplitude()>0.01 && e0> 0.01 )
-            AliDebug(1,Form("Embedded digit: Abs ID %d, amp %f, type %d\n",
-                            digit->GetId(), digit->GetAmplitude(), digit->GetType()));
-          }//digit2
-        }//digit2
+        if ( !digit2 ) continue;
+      
+        digit = dynamic_cast<AliEMCALDigit*>( digits->At(digit2->GetId()) ) ;
+        if ( !digit ) continue;
+        
+        // Put the embedded cell energy in same units as simulated sdigits -> transform to energy units
+        // and multiply to get a big int.
+        Float_t time2 = digit2->GetTime();
+        Float_t e2    = digit2->GetAmplitude();
+        CalibrateADCTime(e2,time2,digit2->GetId());
+        Float_t amp2  = fSDigitizer->Digitize(e2);
+        
+        Float_t e0    = digit ->GetAmplitude();
+        if(e0>0.01)
+          AliDebug(1,Form("digit 1: Abs ID %d, amp %f, type %d, time %e; digit2: Abs ID %d, amp %f, type %d, time %e\n",
+                          digit ->GetId(),digit ->GetAmplitude(), digit ->GetType(), digit->GetTime(),
+                          digit2->GetId(),amp2,                   digit2->GetType(), time2           ));
+        
+        // Sum amplitudes, change digit amplitude
+        digit->SetAmplitude( digit->GetAmplitude() + amp2);
+        
+        // Rough assumption, assign time of the largest of the 2 digits,
+        // data or signal to the final digit.
+        if(amp2 > digit->GetAmplitude())  digit->SetTime(time2);
+        
+        //Mark the new digit as embedded
+        digit->SetType(AliEMCALDigit::kEmbedded);
+        
+        if(digit2->GetAmplitude()>0.01 && e0> 0.01 )
+          AliDebug(1,Form("Embedded digit: Abs ID %d, amp %f, type %d\n",
+                          digit->GetId(), digit->GetAmplitude(), digit->GetType()));
       }//loop digit 2
     }//input loop
   }//embed
@@ -579,6 +586,7 @@ void AliEMCALDigitizer::Digitize(Int_t event)
   //JLK is it better to call Clear() here?
   delete sdigArray ; //We should not delete its contents
   
+  //------------------------------
   //remove digits below thresholds
   // until 10-02-2010 remove digits with energy smaller than fDigitThreshold 3*fPinNoise
   // now, remove digits with Digitized ADC smaller than fDigitThreshold = 3,
@@ -588,23 +596,25 @@ void AliEMCALDigitizer::Digitize(Int_t event)
   for(i = 0 ; i < nEMC ; i++)
   {
     digit = dynamic_cast<AliEMCALDigit*>( digits->At(i) ) ;
-    if(digit)
-    {
-      //Then get the energy in GeV units.
-      energy = fSDigitizer->Calibrate(digit->GetAmplitude()) ;
-      //Then digitize using the calibration constants of the ocdb
-      Float_t ampADC = energy;
-      DigitizeEnergyTime(ampADC, time, digit->GetId())  ;
-      if(ampADC < fDigitThreshold)
+    if ( !digit ) continue;
+    
+    //Then get the energy in GeV units.
+    energy = fSDigitizer->Calibrate(digit->GetAmplitude()) ;
+    
+    //Then digitize using the calibration constants of the ocdb
+    Float_t ampADC = energy;
+    DigitizeEnergyTime(ampADC, time, digit->GetId())  ;
+    
+    if(ampADC < fDigitThreshold)
       digits->RemoveAt(i) ;
-      
-    }// digit exists
+    
   } // digit loop
   
   digits->Compress() ;
   
   Int_t ndigits = digits->GetEntriesFast() ;
   
+  //---------------------------------------------------------------
   //JLK 26-June-2008
   //After we have done the summing and digitizing to create the
   //digits, now we want to calibrate the resulting amplitude to match
@@ -612,17 +622,20 @@ void AliEMCALDigitizer::Digitize(Int_t event)
   for (i = 0 ; i < ndigits ; i++)
   {
     digit = dynamic_cast<AliEMCALDigit *>( digits->At(i) ) ;
-    if(digit)
-    {
-      digit->SetIndexInList(i) ;
-      energy = fSDigitizer->Calibrate(digit->GetAmplitude()) ;
-      time   = digit->GetTime();
-      Float_t ampADC = energy;
-      DigitizeEnergyTime(ampADC, time, digit->GetId());
-      digit->SetAmplitude(ampADC) ;
-      digit->SetTime(time);
-      // printf("digit amplitude set at end: i %d, amp %f\n",i,digit->GetAmplitude());
-    }// digit exists
+    if( !digit ) continue ;
+    
+    digit->SetIndexInList(i) ;
+    
+    time   = digit->GetTime();
+    digit->SetTime(time);
+
+    energy = fSDigitizer->Calibrate(digit->GetAmplitude()) ;
+
+    Float_t ampADC = energy;
+    DigitizeEnergyTime(ampADC, time, digit->GetId());
+    
+    digit->SetAmplitude(ampADC) ;
+    // printf("digit amplitude set at end: i %d, amp %f\n",i,digit->GetAmplitude());
   }//Digit loop
   
 }
@@ -670,14 +683,16 @@ void AliEMCALDigitizer::DigitizeEnergyTime(Float_t & energy, Float_t & time, con
   energy = (energy + fADCpedestalEC)/fADCchannelEC/fADCchannelECDecal   ;
   time  += fTimeChannel-fTimeChannelDecal;
   
-  if(energy > fNADCEC )
-  energy =  fNADCEC ;
+  if ( energy > fNADCEC ) energy =  fNADCEC ;
 }
 
 //_____________________________________________________________________
-void AliEMCALDigitizer::Decalibrate(AliEMCALDigit *digit)
+void AliEMCALDigitizer::DecalibrateTrigger(AliEMCALDigit *digit)
 {
   // Decalibrate, used in Trigger digits
+  
+  if ( !fCalibData ) return ;
+  
   // Load Geometry
   const AliEMCALGeometry *geom = AliEMCALGeometry::GetInstance();
        
@@ -687,6 +702,7 @@ void AliEMCALDigitizer::Decalibrate(AliEMCALDigit *digit)
     return;
   }
        
+  // Recover the digit location in row-column-SM
   Int_t absId   = digit->GetId();
   Int_t iSupMod = -1;
   Int_t nModule = -1;
@@ -696,17 +712,18 @@ void AliEMCALDigitizer::Decalibrate(AliEMCALDigit *digit)
   Int_t ieta    = -1;
        
   Bool_t bCell = geom->GetCellIndex(absId, iSupMod, nModule, nIphi, nIeta) ;
-       
   if (!bCell) Error("Decalibrate","Wrong cell id number : absId %i ", absId) ;
+  
   geom->GetCellPhiEtaIndexInSModule(iSupMod,nModule,nIphi, nIeta,iphi,ieta);
        
-  if (fCalibData)
-  {
-    fADCchannelEC = fCalibData->GetADCchannel(iSupMod,ieta,iphi);
-    Float_t factor = 1./(fADCchannelEC/0.0162);
-               
-    *digit = *digit * factor;
-  }
+  // Now decalibrate
+  Float_t adcChannel       = fCalibData->GetADCchannel      (iSupMod,ieta,iphi);
+  Float_t adcChannelOnline = fCalibData->GetADCchannelOnline(iSupMod,ieta,iphi);
+  //printf("calib param for (SM%d,col%d,row%d): %1.4f - online param: %1.4f \n",iSupMod,ieta,iphi,adcChannel,adcChannelOnline);
+  Float_t factor = 1./(adcChannel/adcChannelOnline);
+  
+  *digit = *digit * factor;
+  
 }
 
 //_____________________________________________________________________
@@ -890,7 +907,7 @@ void AliEMCALDigitizer::Digits2FastOR(TClonesArray* digitsTMP, TClonesArray* dig
   {
     if (IsDead(digit)) continue;
     
-    Decalibrate(digit);
+    DecalibrateTrigger(digit);
     
     Int_t id = digit->GetId();
     
@@ -1056,7 +1073,7 @@ void AliEMCALDigitizer::InitParameters()
   
   // These defaults are normally not used. 
   // Values are read from calibration database instead
-  fADCchannelEC       = 0.0153; // Update 24 Apr 2007: 250./16/1024 - width of one ADC channel in GeV
+  fADCchannelEC       = 0.0162; // Nominal value set online for most of the channels, MIP peak sitting at ~266./16/1024
   fADCpedestalEC      = 0.0 ;   // GeV
   fADCchannelECDecal  = 1.0;    // No decalibration by default
   fTimeChannel        = 0.0;    // No time calibration by default