]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - AD/ADrec/AliADQADataMakerRec.cxx
Usage of RecoParam in QADataMaker and macro for Time slewing
[u/mrichter/AliRoot.git] / AD / ADrec / AliADQADataMakerRec.cxx
index 5e8ab62e8409135aed4e9e05a5c0784fa75f0356..502dc962c23c2f2a344d6caad717ae0a3bf4996b 100644 (file)
@@ -48,6 +48,7 @@
 #include "AliADReconstructor.h"
 #include "AliADTrending.h"
 #include "AliADCalibData.h"
+#include "AliADRecoParam.h"
 #include "AliCTPTimeParams.h"
 #include "event.h"
 
@@ -57,6 +58,7 @@ ClassImp(AliADQADataMakerRec)
 AliADQADataMakerRec::AliADQADataMakerRec() : 
 AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kAD), "AD Quality Assurance Data Maker"),
   fCalibData(0x0),
+  fRecoParam(0x0),
   fTrendingUpdateTime(0), 
   fCycleStartTime(0), 
   fCycleStopTime(0),
@@ -80,6 +82,7 @@ AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kAD), "AD Quality Assurance Data
 AliADQADataMakerRec::AliADQADataMakerRec(const AliADQADataMakerRec& qadm) :
   AliQADataMakerRec(),
   fCalibData(0x0),
+  fRecoParam(0x0),
   fTrendingUpdateTime(0), 
   fCycleStartTime(0), 
   fCycleStopTime(0),
@@ -135,6 +138,7 @@ void AliADQADataMakerRec::StartOfDetectorCycle()
   // Reset of the histogram used - to have the trend versus time -
  
   fCalibData = GetCalibData();
+  fRecoParam = (AliADRecoParam*)GetRecoParam();
  
   AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");
   if (!entry) AliFatal("CTP timing parameters are not found in OCDB !");
@@ -149,11 +153,11 @@ void AliADQADataMakerRec::StartOfDetectorCycle()
   AliCDBEntry *entry2 = AliCDBManager::Instance()->Get("AD/Calib/TimeDelays");
   if (!entry2) AliFatal("AD time delays are not found in OCDB !");
   TH1F *delays = (TH1F*)entry2->GetObject();
-
+  /*/
   AliCDBEntry *entry3 = AliCDBManager::Instance()->Get("AD/Calib/TimeSlewing");
   if (!entry3) AliFatal("AD time slewing function is not found in OCDB !");
   fTimeSlewing = (TF1*)entry3->GetObject();
-  /*/
 
   for(Int_t i = 0 ; i < 16; ++i) {
     //Int_t board = AliADCalibData::GetBoardNumber(i);
@@ -176,7 +180,6 @@ void AliADQADataMakerRec::StartOfDetectorCycle()
   TTimeStamp currentTime;
   fCycleStartTime = currentTime.GetSec();
  
-  //  fNTotEvents = 0;
 }
 //____________________________________________________________________________ 
 void AliADQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
@@ -184,12 +187,39 @@ void AliADQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArra
   // Detector specific actions at end of cycle
   // Does the QA checking
   ResetEventTrigClasses();
-  //
-  AliQAChecker::Instance()->Run(AliQAv1::kAD, task, list) ;
   
   if(task == AliQAv1::kRAWS){
     TTimeStamp currentTime;
     fCycleStopTime = currentTime.GetSec();
+    
+    Int_t nCorrelation = 0;
+    Int_t nPair = 1;
+    for(Int_t i=0;i<8;i++){
+       for(Int_t j=7;j>i;j--){
+               if( (j - i) == 4){ 
+                       Float_t Mean = ((TH1F*)GetRawsData(kNTimeDiffADC + nCorrelation))->GetMean();
+                       Float_t RMS = ((TH1F*)GetRawsData(kNTimeDiffADC + nCorrelation))->GetRMS();
+                       SetRawsDataBinContent(kPairTimeDiffMean,nPair,Mean);
+                       SetRawsDataBinContent(kPairTimeDiffRMS,nPair,RMS);
+                       nPair++;
+                       }
+                nCorrelation++;
+               }
+       }
+    nCorrelation = 0;
+    for(Int_t i=0;i<8;i++){
+       for(Int_t j=7;j>i;j--){
+               if( (j - i) == 4){ 
+                       Float_t Mean = ((TH1F*)GetRawsData(kNTimeDiffADA + nCorrelation))->GetMean();
+                       Float_t RMS = ((TH1F*)GetRawsData(kNTimeDiffADA + nCorrelation))->GetRMS();
+                       SetRawsDataBinContent(kPairTimeDiffMean,nPair,Mean);
+                       SetRawsDataBinContent(kPairTimeDiffRMS,nPair,RMS);
+                       nPair++;
+                       }
+                nCorrelation++;
+               }
+       }               
+    
   }
 
   for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
@@ -199,6 +229,7 @@ void AliADQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArra
     } else if (task == AliQAv1::kESDS) {
     }
   }
+  AliQAChecker::Instance()->Run(AliQAv1::kAD, task, list) ;
 }
 
 //____________________________________________________________________________ 
@@ -206,37 +237,33 @@ void AliADQADataMakerRec::InitESDs()
 {
   const Bool_t expert   = kTRUE ; 
   const Bool_t image    = kTRUE ; 
-       
-  TH2F * h2d;
-  TH1I * h1i;
-  TH1F * h1d;
-               
-  h1i = new TH1I("H1I_Cell_Multiplicity_ADA", "Cell Multiplicity in ADA;Multiplicity (Nb of Cell);Counts", 35, 0, 35) ;  
-  Add2ESDsList(h1i, kCellMultiADA, !expert, image)  ;  
+
+  TH1I * h0 = new TH1I("H1I_Cell_Multiplicity_ADA", "Cell Multiplicity in ADA;Multiplicity (Nb of Cell);Counts", 35, 0, 35) ;  
+  Add2ESDsList(h0, kCellMultiADA, !expert, image)  ;  
                                                                                                         
-  h1i = new TH1I("H1I_Cell_Multiplicity_ADC", "Cell Multiplicity in AD;Multiplicity (Nb of Cell);Counts", 35, 0, 35) ;  
-  Add2ESDsList(h1i, kCellMultiADC, !expert, image)  ;  
+  TH1I * h1 = new TH1I("H1I_Cell_Multiplicity_ADC", "Cell Multiplicity in AD;Multiplicity (Nb of Cell);Counts", 35, 0, 35) ;  
+  Add2ESDsList(h1, kCellMultiADC, !expert, image)  ;  
   
-  h1d = new TH1F("H1D_BBFlag_Counters", "BB Flag Counters;Channel;Counts",64, 0, 64) ;  
-  Add2ESDsList(h1d, kBBFlag, !expert, image)  ;  
+  TH1F * h2 = new TH1F("H1D_BBFlag_Counters", "BB Flag Counters;Channel;Counts",16, 0, 16) ;  
+  Add2ESDsList(h2, kBBFlag, !expert, image)  ;  
   
-  h1d = new TH1F("H1D_BGFlag_Counters", "BG Flag Counters;Channel;Counts",64, 0, 64) ;  
-  Add2ESDsList(h1d, kBGFlag, !expert, image)  ;  
+  TH1F * h3 = new TH1F("H1D_BGFlag_Counters", "BG Flag Counters;Channel;Counts",16, 0, 16) ;  
+  Add2ESDsList(h3, kBGFlag, !expert, image)  ;  
   
-  h2d = new TH2F("H2D_Charge_Channel", "ADC Charge per channel;Channel;Charge (ADC counts)",64, 0, 64, 1024, 0, 1024) ;  
-  Add2ESDsList(h2d, kChargeChannel, !expert, image)  ;  
+  TH2F * h4 = new TH2F("H2D_Charge_Channel", "ADC Charge per channel;Channel;Charge (ADC counts)",16, 0, 16, 1024, 0, 1024) ;  
+  Add2ESDsList(h4, kChargeChannel, !expert, image)  ;  
   
-  h2d = new TH2F("H2D_Time_Channel", "Time per channel;Channel;Time (ns)",64, 0, 64, 400, -100, 100) ;  
-  Add2ESDsList(h2d, kTimeChannel, !expert, image)  ;  
+  TH2F * h5 = new TH2F("H2D_Time_Channel", "Time per channel;Channel;Time (ns)",16, 0, 16, 400, -100, 100) ;  
+  Add2ESDsList(h5, kTimeChannel, !expert, image)  ;  
   
-  h1d = new TH1F("H1D_ADA_Time", "Mean ADA Time;Time (ns);Counts",1000, -100., 100.);
-  Add2ESDsList(h1d,kESDADATime, !expert, image); 
+  TH1F * h6 = new TH1F("H1D_ADA_Time", "Mean ADA Time;Time (ns);Counts",1000, -100., 100.);
+  Add2ESDsList(h6,kESDADATime, !expert, image); 
   
-  h1d = new TH1F("H1D_ADC_Time", "Mean ADC Time;Time (ns);Counts",1000, -100., 100.);
-  Add2ESDsList(h1d,kESDADCTime, !expert, image); 
+  TH1F * h7 = new TH1F("H1D_ADC_Time", "Mean ADC Time;Time (ns);Counts",1000, -100., 100.);
+  Add2ESDsList(h7,kESDADCTime, !expert, image); 
   
-  h1d = new TH1F("H1D_Diff_Time", "Diff Time ADA - ADC;Diff Time ADA - ADC (ns);Counts",1000, -200., 200.);
-  Add2ESDsList(h1d,kESDDiffTime, !expert, image); 
+  TH1F * h8 = new TH1F("H1D_Diff_Time", "Diff Time ADA - ADC;Diff Time ADA - ADC (ns);Counts",1000, -200., 200.);
+  Add2ESDsList(h8,kESDDiffTime, !expert, image); 
   //
   ClonePerTrigClass(AliQAv1::kESDS); // this should be the last line   
 }
@@ -303,9 +330,8 @@ void AliADQADataMakerRec::MakeDigits()
     while ( (ADDigit = dynamic_cast<AliADdigit *>(next())) ) {
          Int_t totCharge = 0;
          Int_t   PMNumber  = ADDigit->PMNumber();
-
-        if(PMNumber<8 && ADDigit->GetBBflag()) nBBflagsADA++;
-        if(PMNumber>7 && ADDigit->GetBBflag()) nBBflagsADC++;
+        if(PMNumber<8 && ADDigit->GetBBflag()) nBBflagsADC++;
+        if(PMNumber>7 && ADDigit->GetBBflag()) nBBflagsADA++;
         
         Short_t adc[21];
         for(Int_t iClock=0; iClock<21; iClock++) { 
@@ -369,12 +395,12 @@ void AliADQADataMakerRec::MakeESDs(AliESDEvent* esd)
     for(Int_t i=0;i<16;i++) {
       FillESDsData(kChargeChannel,(Float_t) i,(Float_t) esdAD->GetAdc(i));
       if (i < 8) {
-       if(esdAD->BBTriggerADA(i)) FillESDsData(kBBFlag,(Float_t) i);
-       if(esdAD->BGTriggerADA(i)) FillESDsData(kBGFlag,(Float_t) i);
+       if(esdAD->BBTriggerADC(i)) FillESDsData(kBBFlag,(Float_t) i);
+       if(esdAD->BGTriggerADC(i)) FillESDsData(kBGFlag,(Float_t) i);
       }
       else {
-       if(esdAD->BBTriggerADC(i-8)) FillESDsData(kBBFlag,(Float_t) i);  
-       if(esdAD->BGTriggerADC(i-8)) FillESDsData(kBGFlag,(Float_t) i);
+       if(esdAD->BBTriggerADA(i-8)) FillESDsData(kBBFlag,(Float_t) i);  
+       if(esdAD->BGTriggerADA(i-8)) FillESDsData(kBGFlag,(Float_t) i);
       }                        
       Float_t time = (Float_t) esdAD->GetTime(i);
       FillESDsData(kTimeChannel,(Float_t) i,time);
@@ -403,32 +429,51 @@ void AliADQADataMakerRec::MakeESDs(AliESDEvent* esd)
 void AliADQADataMakerRec::InitRaws()
 {
   // Creates RAW histograms in Raws subdir
-
+  if(!fRecoParam) fRecoParam = (AliADRecoParam*)GetRecoParam();
   const Bool_t expert   = kTRUE ; 
   const Bool_t saveCorr = kTRUE ; 
   const Bool_t image    = kTRUE ; 
 
   const Int_t kNintegrator  =    2;
  
-  const Int_t kNTdcTimeBins  = 1280;
-  const Float_t kTdcTimeMin    =    0.;
-  const Float_t kTdcTimeMax    = 75.;
-    const Int_t kNTdcWidthBins =  256;
-  const Float_t kTdcWidthMin   =    0;
-  const Float_t kTdcWidthMax   =  200.;
-  const Int_t kNChargeBins   = 1024;
-  const Float_t kChargeMin     =    0;
-  const Float_t kChargeMax     = 1024;
+  const Int_t kNTdcTimeBins  = fRecoParam->GetNTdcTimeBins();
+  const Float_t kTdcTimeMin    =  fRecoParam->GetTdcTimeMin();
+  const Float_t kTdcTimeMax    = fRecoParam->GetTdcTimeMax();
+  const Int_t kNTdcWidthBins =  fRecoParam->GetNTdcWidthBins();
+  const Float_t kTdcWidthMin   =    fRecoParam->GetTdcWidthMin();
+  const Float_t kTdcWidthMax   =  fRecoParam->GetTdcWidthMax();
+  const Int_t kNChargeChannelBins   =  fRecoParam->GetNChargeChannelBins();
+  const Int_t kNChargeSideBins   = fRecoParam->GetNChargeSideBins();
+  const Int_t kNChargeCorrBins   = fRecoParam->GetNChargeCorrBins();
+   
+  const Float_t kChargeChannelMin     =    1;
+  const Float_t kChargeChannelMax     = 1+kNChargeChannelBins;
+  const Float_t kChargeSideMin     =    1;
+  const Float_t kChargeSideMax     = 1+kNChargeSideBins;
+  const Float_t kChargeCorrMin     =    0;
+  const Float_t kChargeCorrMax     = kNChargeCorrBins;
+  
+  const Int_t kNTimeCorrBins = 614; 
+  const Float_t kTimeCorrMin = 70.019531;
+  const Float_t kTimeCorrMax =  129.980469; 
+   
+  const Int_t kNTimeDiffBins = 154; 
+  const Float_t kTimeDiffMin = -15.039062;
+  const Float_t kTimeDiffMax =  15.039062;
+  
   const Int_t kNChannelBins  =   16;
   const Float_t kChannelMin    =    0;
   const Float_t kChannelMax    =   16;
-  const Int_t kNPedestalBins =  200;
+  
+  const Int_t kNPedestalBins =  40;
   const Float_t kPedestalMin   =    0;
-  const Float_t kPedestalMax   =  200; 
+  const Float_t kPedestalMax   =  40; 
+  
   const Int_t kNPairBins  =   8;
   const Float_t kPairMin    =    0;
   const Float_t kPairMax    =   8;
-
+  
   TH2I * h2i;
   TH2F * h2d;
   TH1I * h1i;
@@ -443,9 +488,9 @@ void AliADQADataMakerRec::InitRaws()
   Add2RawsList(h1i,kMultiADC, !expert, image, saveCorr);   iHisto++;
  
   // Creation of Total Charge Histograms
-  h1d = new TH1F("H1D_Charge_ADA", "Total Charge in ADA;Charge [ADC counts];Counts", 4000, 0, 30000) ;  
+  h1d = new TH1F("H1D_Charge_ADA", "Total Charge in ADA;Charge [ADC counts];Counts", kNChargeSideBins, kChargeSideMin, kChargeSideMax) ;  
   Add2RawsList(h1d,kChargeADA, !expert, image, saveCorr);   iHisto++;
-  h1d = new TH1F("H1D_Charge_ADC", "Total Charge in ADC;Charge [ADC counts];Counts", 4000, 0, 50000) ;  
+  h1d = new TH1F("H1D_Charge_ADC", "Total Charge in ADC;Charge [ADC counts];Counts", kNChargeSideBins, kChargeSideMin, kChargeSideMax) ;  
   Add2RawsList(h1d,kChargeADC, !expert, image, saveCorr);   iHisto++;
   h1d = new TH1F("H1D_Charge_AD", "Total Charge in AD;Charge [ADC counts];Counts", 4000, 0, 80000) ;  
   Add2RawsList(h1d,kChargeAD, !expert,  image, saveCorr);   iHisto++;
@@ -453,7 +498,7 @@ void AliADQADataMakerRec::InitRaws()
 
   // Creation of Charge EoI histogram 
   h2d = new TH2F("H2D_ChargeEoI", "Charge Event of Interest;Channel Number;Charge [ADC counts]"
-                ,kNChannelBins, kChannelMin, kChannelMax, kNChargeBins, kChargeMin, 2.*kChargeMax);
+                ,kNChannelBins, kChannelMin, kChannelMax, kNChargeChannelBins, kChargeChannelMin, kChargeChannelMax);
   Add2RawsList(h2d,kChargeEoI, !expert, image, saveCorr); iHisto++;
 
   for(Int_t iInt=0;iInt<kNintegrator;iInt++){
@@ -461,11 +506,15 @@ void AliADQADataMakerRec::InitRaws()
     h2i = new TH2I(Form("H2I_Pedestal_Int%d",iInt), Form("Pedestal (Int%d);Channel;Pedestal [ADC counts]",iInt)
                   ,kNChannelBins, kChannelMin, kChannelMax,kNPedestalBins,kPedestalMin ,kPedestalMax );
     Add2RawsList(h2i,(iInt == 0 ? kPedestalInt0 : kPedestalInt1), !expert, image, saveCorr); iHisto++;
+    
+    h2d = new TH2F(Form("H2D_PedestalDiff_Int%d",iInt), Form("Pedestal difference Online - OCDB (Int%d);Channel; Pedestal Online - OCDB",iInt)
+                  ,kNChannelBins, kChannelMin, kChannelMax,81,-40.5,40.5);
+    Add2RawsList(h2d,(iInt == 0 ? kPedestalDiffInt0 : kPedestalDiffInt1), !expert, image, saveCorr); iHisto++;
        
 
     // Creation of Charge EoI histograms 
     h2i = new TH2I(Form("H2I_ChargeEoI_Int%d",iInt), Form("Charge EoI (Int%d);Channel;Charge [ADC counts]",iInt)
-                  ,kNChannelBins, kChannelMin, kChannelMax, kNChargeBins, kChargeMin, kChargeMax);
+                  ,kNChannelBins, kChannelMin, kChannelMax, kNChargeChannelBins, kChargeChannelMin, kChargeChannelMax);
     Add2RawsList(h2i,(iInt == 0 ? kChargeEoIInt0 : kChargeEoIInt1), !expert, image, saveCorr); iHisto++;
     
   }    
@@ -495,23 +544,32 @@ void AliADQADataMakerRec::InitRaws()
   h1d = new TH1F("H1D_ADC_Time", "ADC Time;Time [ns];Counts",kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax);
   Add2RawsList(h1d,kADCTime, !expert, image, saveCorr); iHisto++;
        
-  h1d = new TH1F("H1D_Diff_Time","Diff ADA-ADC Time;Time [ns];Counts",kNTdcTimeBins, -50., 50.);
+  h1d = new TH1F("H1D_Diff_Time","Diff ADA-ADC Time;Time [ns];Counts",kNTimeDiffBins,kTimeDiffMin,kTimeDiffMax);
   Add2RawsList(h1d,kDiffTime, !expert, image, saveCorr); iHisto++;
 
   h2d = new TH2F("H2D_TimeADA_ADC", "Mean Time in ADC versus ADA;Time ADA [ns];Time ADC [ns]", kNTdcTimeBins/8, kTdcTimeMin,kTdcTimeMax,kNTdcTimeBins/8, kTdcTimeMin,kTdcTimeMax) ;  
   Add2RawsList(h2d,kTimeADAADC, !expert, image, saveCorr);   iHisto++;
   
+  h2d = new TH2F("H2D_TimeSlewingOff", "Time Vs Charge (no slewing correction);Leading Time[ns];Charge [ADC counts]", kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax, kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax) ;  
+  Add2RawsList(h2d,kTimeSlewingOff, !expert, image, saveCorr);   iHisto++;
+  
+  h2d = new TH2F("H2D_TimeSlewingOn", "Time Vs Charge (after slewing correction);Leading Time[ns];Charge [ADC counts]", kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax, kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax) ;  
+  Add2RawsList(h2d,kTimeSlewingOn, !expert, image, saveCorr);   iHisto++;
+  
+  h2d = new TH2F("H2D_WidthSlewing", "Width Vs Charge ;Time Width [ns];Charge [ADC counts]", kNTdcWidthBins, kTdcWidthMin, kTdcWidthMax, kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax) ;  
+  Add2RawsList(h2d,kWidthSlewing, !expert, image, saveCorr);   iHisto++;
+  
   //Creation of pair coincidence histograms
-  h1i = new TH1I("H1I_MultiCoincidence_ADA", "Number of coincidences in ADA;# of Coincidences;Entries", 5, 0, 5) ;  
+  h1i = new TH1I("H1I_MultiCoincidence_ADA", "Number of coincidences in ADA;# of Coincidences;Entries", 5, -0.5, 4.5) ;  
   Add2RawsList(h1i,kNCoincADA, !expert, image, saveCorr);   iHisto++;
-  h1i = new TH1I("H1I_MultiCoincidence_ADC", "Number of coincidences in ADC;# of Coincidences;Entries", 5, 0, 5) ;  
+  h1i = new TH1I("H1I_MultiCoincidence_ADC", "Number of coincidences in ADC;# of Coincidences;Entries", 5, -0.5, 4.5) ;  
   Add2RawsList(h1i,kNCoincADC, !expert, image, saveCorr);   iHisto++;
   
-  h2d = new TH2F("H2D_Pair_Diff_Time","Diff Pair Time;Pair number;Time [ns]",kNPairBins, kPairMin, kPairMax,kNTdcTimeBins, -50., 50.);
-  Add2RawsList(h2d,kPairDiffTime, !expert, image, saveCorr); iHisto++;
+  h1d = new TH1F("H1D_Pair_TimeDiffMean","Time difference mean for coincidence pair [ns];Pair number;Time mean [ns]",kNPairBins, kPairMin, kPairMax);
+  Add2RawsList(h1d,kPairTimeDiffMean, expert, image, saveCorr); iHisto++;
   
-  h2d = new TH2F("H2D_Pair_Diff_Charge","Diff Pair Charge;Pair number;Charge [ADC counts]",kNPairBins, kPairMin, kPairMax, 2*kNChargeBins, -kChargeMax, kChargeMax);
-  Add2RawsList(h2d,kPairDiffCharge, !expert, image, saveCorr); iHisto++;
+  h1d = new TH1F("H1D_Pair_TimeDiffRMS","Time difference RMS for coincidence pair [ns];Pair number;Time RMS [ns]",kNPairBins, kPairMin, kPairMax);
+  Add2RawsList(h1d,kPairTimeDiffRMS, expert, image, saveCorr); iHisto++;
 
   //Creation of Clock histograms
   h2d = new TH2F("H2D_BBFlagVsClock", "BB-Flags Versus LHC-Clock;Channel;LHC Clocks",kNChannelBins, kChannelMin, kChannelMax,21, -10.5, 10.5 );
@@ -531,6 +589,56 @@ void AliADQADataMakerRec::InitRaws()
   h2d = new TH2F("H2D_BGFlagPerChannel", "BG-Flags Versus Channel;Channel;BG Flags Count",kNChannelBins, kChannelMin, kChannelMax,22,-0.5,21.5);
   Add2RawsList(h2d,kBGFlagsPerChannel, !expert, image, saveCorr); iHisto++;
   
+  h1d = new TH1F("H1D_FlagNoTime", "Fraction of events with BB/BG flag but no time measurement;Channel;Entries",kNChannelBins, kChannelMin, kChannelMax);
+  Add2RawsList(h1d,kFlagNoTime, expert, image, saveCorr); iHisto++;
+  
+  h1d = new TH1F("H1D_TimeNoFlag", "Fraction of events with time measurement but no BB/BG flag;Channel;Entries",kNChannelBins, kChannelMin, kChannelMax);
+  Add2RawsList(h1d,kTimeNoFlag, expert, image, saveCorr); iHisto++;
+  
+  //Correlation histograms
+  Int_t nCorrelation = 0;
+  for(Int_t i=0;i<8;i++){
+       for(Int_t j=7;j>i;j--){
+               h2d = new TH2F(Form("ChargeCorr/H2D_kNChargeCorrADA_%d_%d",i,j),Form("Charge Correlation ADA module%d - module%d",i,j),kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax,kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax);
+               Add2RawsList(h2d,kNChargeCorrADA+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+               }
+       }
+  nCorrelation = 0;
+  for(Int_t i=0;i<8;i++){
+       for(Int_t j=7;j>i;j--){
+               h2d = new TH2F(Form("ChargeCorr/H2D_kNChargeCorrADC_%d_%d",i,j),Form("Charge Correlation ADC module%d - module%d",i,j),kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax,kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax);
+               Add2RawsList(h2d,kNChargeCorrADC+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+               }
+       }
+  nCorrelation = 0;
+  for(Int_t i=0;i<8;i++){
+       for(Int_t j=7;j>i;j--){
+               h2d = new TH2F(Form("TimeCorr/H2D_kNTimeCorrADA_%d_%d",i,j),Form("Time Correlation ADA module%d - module%d",i,j),kNTimeCorrBins,kTimeCorrMin,kTimeCorrMax,kNTimeCorrBins,kTimeCorrMin,kTimeCorrMax);
+               Add2RawsList(h2d,kNTimeCorrADA+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+               }
+       }
+  nCorrelation = 0;
+  for(Int_t i=0;i<8;i++){
+       for(Int_t j=7;j>i;j--){
+               h2d = new TH2F(Form("TimeCorr/H2D_kNTimeCorrADC_%d_%d",i,j),Form("Time Correlation ADC module%d - module%d",i,j),kNTimeCorrBins,kTimeCorrMin,kTimeCorrMax,kNTimeCorrBins,kTimeCorrMin,kTimeCorrMax);
+               Add2RawsList(h2d,kNTimeCorrADC+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+               }
+       }
+  nCorrelation = 0;
+  for(Int_t i=0;i<8;i++){
+       for(Int_t j=7;j>i;j--){
+               h1d = new TH1F(Form("TimeDiff/H1D_kNTimeDiffADA_%d_%d",i,j),Form("Time Difference ADA module%d - module%d",i,j),kNTimeDiffBins,kTimeDiffMin,kTimeDiffMax);
+               Add2RawsList(h1d,kNTimeDiffADA+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+               }
+       }
+  nCorrelation = 0;
+  for(Int_t i=0;i<8;i++){
+       for(Int_t j=7;j>i;j--){
+               h1d = new TH1F(Form("TimeDiff/H1D_kNTimeDiffADC_%d_%d",i,j),Form("Time Difference ADC module%d - module%d",i,j),kNTimeDiffBins,kTimeDiffMin,kTimeDiffMax);
+               Add2RawsList(h1d,kNTimeDiffADC+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+               }
+       }
+  
   AliDebug(AliQAv1::GetQADebugLevel(), Form("%d Histograms has been added to the Raws List",iHisto));
   //
   ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line
@@ -573,6 +681,7 @@ void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
 
     Int_t  iFlag=0;
     Int_t  pedestal;
+    Float_t OCDBdiff;
     Int_t  integrator[16];
     Bool_t flagBB[16];  
     Bool_t flagBG[16];  
@@ -583,7 +692,7 @@ void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
 
     for(Int_t iChannel=0; iChannel<16; iChannel++) { // BEGIN : Loop over channels
                   
-      offlineCh = rawStream->GetOfflineChannel(iChannel);
+      offlineCh = kOfflineChannel[iChannel];
                   
       // Fill Pedestal histograms
           
@@ -595,15 +704,15 @@ void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
        for(Int_t j=15; j<21; j++){
          pedestal= (Int_t) rawStream->GetPedestal(iChannel, j);
          integrator[offlineCh] = rawStream->GetIntegratorFlag(iChannel, j);
+         OCDBdiff = pedestal - fCalibData->GetPedestal(offlineCh+16*integrator[offlineCh]);
 
          FillRawsData((integrator[offlineCh] == 0 ? kPedestalInt0 : kPedestalInt1),offlineCh,pedestal);
+         FillRawsData((integrator[offlineCh] == 0 ? kPedestalDiffInt0 : kPedestalDiffInt1),offlineCh,OCDBdiff);
        }
       }
-
       // Fill Charge EoI histograms
           
       adc[offlineCh]    = 0.0;
-
       // Search for the maximum charge in the train of 21 LHC clocks 
       // regardless of the integrator which has been operated:
       Float_t maxadc = 0;
@@ -614,13 +723,12 @@ void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
        Int_t k = offlineCh+16*iIntegrator;
 
        adcPedSub[iClock] = rawStream->GetPedestal(iChannel,iClock) - fCalibData->GetPedestal(k);
-       //                              if(adcPedSub[iClock] <= GetRecoParam()->GetNSigmaPed()*fCalibData->GetSigma(k)) {
-       if(adcPedSub[iClock] <= 2.*fCalibData->GetSigma(k)) {
+       if(adcPedSub[iClock] <= fRecoParam->GetNSigmaPed()*fCalibData->GetSigma(k)) {
          adcPedSub[iClock] = 0;
          continue;
        }
-       //                              if(iClock < GetRecoParam()->GetStartClock() || iClock > GetRecoParam()->GetEndClock()) continue;
-       if(iClock < 8 || iClock > 12) continue;
+       
+       if(iClock < fRecoParam->GetStartClock() || iClock > fRecoParam->GetEndClock()) continue;
        if(adcPedSub[iClock] > maxadc) {
          maxadc = adcPedSub[iClock];
          imax   = iClock;
@@ -628,11 +736,9 @@ void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
       }
       //printf(Form("Channel %d (online), %d (offline)\n",iChannel,j)); 
       if (imax != -1) {
-       //                              Int_t start = imax - GetRecoParam()->GetNPreClocks();
-       Int_t start = imax - 2;
+       Int_t start = imax - fRecoParam->GetNPreClocks();
        if (start < 0) start = 0;
-       //                              Int_t end = imax + GetRecoParam()->GetNPostClocks();
-       Int_t end = imax + 1;
+       Int_t end = imax + fRecoParam->GetNPostClocks();
        if (end > 20) end = 20;
        for(Int_t iClock = start; iClock <= end; iClock++) {
          adc[offlineCh] += adcPedSub[iClock];
@@ -669,8 +775,8 @@ void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
                   
   
       // Fill HPTDC Time Histograms
-      //timeCorr[offlineCh] = CorrectLeadingTime(offlineCh,time[offlineCh],adc[offlineCh]);
-      timeCorr[offlineCh] = time[offlineCh];
+      timeCorr[offlineCh] = CorrectLeadingTime(offlineCh,time[offlineCh],adc[offlineCh]);
+      //timeCorr[offlineCh] = time[offlineCh];
 
       //const Float_t p1 = 2.50; // photostatistics term in the time resolution
       //const Float_t p2 = 3.00; // sleewing related term in the time resolution
@@ -716,6 +822,12 @@ void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
       }
       FillRawsData(kBBFlagsPerChannel, offlineCh,nbbFlag);
       FillRawsData(kBGFlagsPerChannel, offlineCh,nbgFlag);
+      if((nbbFlag+nbgFlag)>0 && time[offlineCh]<1e-6)FillRawsData(kFlagNoTime,offlineCh);
+      if((nbbFlag+nbgFlag)==0 && time[offlineCh]>1e-6)FillRawsData(kTimeNoFlag,offlineCh);
+      
+      FillRawsData(kTimeSlewingOff,time[offlineCh],adc[offlineCh]);
+      FillRawsData(kTimeSlewingOn,timeCorr[offlineCh],adc[offlineCh]);
+      FillRawsData(kWidthSlewing,width[offlineCh],adc[offlineCh]);
       
       FillRawsData(kHPTDCTime,offlineCh,timeCorr[offlineCh]);
       FillRawsData(kWidth,offlineCh,width[offlineCh]);
@@ -733,32 +845,31 @@ void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
 
     }// END of Loop over channels
     
-    for(Int_t iChannel=0; iChannel<4; iChannel++) {//Loop over pairs ADC
-       offlineCh = rawStream->GetOfflineChannel(iChannel);
-       Float_t sigma = fCalibData->GetSigma(offlineCh+16*integrator[offlineCh]);
-       Float_t sigma4 = fCalibData->GetSigma(offlineCh+4+16*integrator[offlineCh]);            
-       if( ((adc[offlineCh] > 2.*sigma) && !(time[offlineCh] <1.e-6)) && ((adc[offlineCh+4] > 2.*sigma4) && !(time[offlineCh+4] <1.e-6)) ){ 
-               pmulADC++;
-               if(timeCorr[offlineCh]<-1024.+1.e-6 || timeCorr[offlineCh+4]<-1024.+1.e-6) pDiffTime = -1024.;
-               else pDiffTime = timeCorr[offlineCh+4] - timeCorr[offlineCh]; 
-               FillRawsData(kPairDiffTime,iPair,pDiffTime);
+    //Correlation Cside
+    Int_t nCorrelation = 0;
+    for(Int_t iChannel=0; iChannel<8; iChannel++) {
+       for(Int_t jChannel=7; jChannel>iChannel; jChannel--) {
+               FillRawsData(kNChargeCorrADC+nCorrelation,adc[iChannel],adc[jChannel]);
+               FillRawsData(kNTimeCorrADC+nCorrelation,time[iChannel],time[jChannel]);
+               if(time[iChannel]>1e-6 && time[jChannel]>1e-6) FillRawsData(kNTimeDiffADC+nCorrelation,time[iChannel]-time[jChannel]);
+               nCorrelation++;
                }
-       FillRawsData(kPairDiffCharge,iPair,TMath::Abs(adc[offlineCh]-adc[offlineCh+4]));
-       iPair++;
        }
-    for(Int_t iChannel=8; iChannel<12; iChannel++) {//Loop over pairs ADA
-       offlineCh = rawStream->GetOfflineChannel(iChannel);
-       Float_t sigma = fCalibData->GetSigma(offlineCh+16*integrator[offlineCh]);
-       Float_t sigma4 = fCalibData->GetSigma(offlineCh+4+16*integrator[offlineCh]);
-       if( ((adc[offlineCh] > 2.*sigma) && !(time[offlineCh] <1.e-6)) && ((adc[offlineCh+4] > 2.*sigma4) && !(time[offlineCh+4] <1.e-6)) ){ 
-               pmulADA++;
-               if(timeCorr[offlineCh]<-1024.+1.e-6 || timeCorr[offlineCh+4]<-1024.+1.e-6) pDiffTime = -1024.;
-               else pDiffTime = timeCorr[offlineCh+4] - timeCorr[offlineCh]; 
-               FillRawsData(kPairDiffTime,iPair,pDiffTime);
+    //Correlation Aside
+    nCorrelation = 0;
+    for(Int_t iChannel=8; iChannel<16; iChannel++) {
+       for(Int_t jChannel=15; jChannel>iChannel; jChannel--) {
+               FillRawsData(kNChargeCorrADA+nCorrelation,adc[iChannel],adc[jChannel]);
+               FillRawsData(kNTimeCorrADA+nCorrelation,time[iChannel],time[jChannel]);
+               if(time[iChannel]>1e-6 && time[jChannel]>1e-6) FillRawsData(kNTimeDiffADA+nCorrelation,time[iChannel]-time[jChannel]);
+               nCorrelation++;
                }
-       FillRawsData(kPairDiffCharge,iPair,TMath::Abs(adc[offlineCh]-adc[offlineCh+4]));
-       iPair++;        
-       }
+       }
+       
+    for(Int_t iChannel=0; iChannel<4; iChannel++) {//Loop over pairs
+               if(flagBB[iChannel] && flagBB[iChannel+4]) pmulADC++;
+               if(flagBB[iChannel+8] && flagBB[iChannel+12]) pmulADA++;
+               }       
     FillRawsData(kNCoincADA,pmulADA);
     FillRawsData(kNCoincADC,pmulADC);
        
@@ -819,7 +930,7 @@ void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
 }
 
 //____________________________________________________________________________ 
-Float_t AliADQADataMakerRec::CorrectLeadingTime(Int_t /*i*/, Float_t time, Float_t /*adc*/) const
+Float_t AliADQADataMakerRec::CorrectLeadingTime(Int_t /*i*/, Float_t time, Float_t adc) const
 {
   // Correct the leading time
   // for slewing effect and
@@ -836,7 +947,7 @@ Float_t AliADQADataMakerRec::CorrectLeadingTime(Int_t /*i*/, Float_t time, Float
   // Slewing correction
   //Float_t thr = fCalibData->GetCalibDiscriThr(i,kTRUE);
   //AliInfo(Form("adc %f thr %f dtime %f ", adc,thr,fTimeSlewing->Eval(adc/thr)));
-  //time -= fTimeSlewing->Eval(adc/thr);
+  time -= fTimeSlewing->Eval(adc);
 
   return time;
 }