ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


//  Produces the data needed to calculate the quality assurance 
//  All data must be mergeable objects
//  Handles ESDs and Raws
//  Histos defined will be used for Raw Data control and monitoring

// --- ROOT system ---
#include <TClonesArray.h>
#include <TFile.h> 
#include <TF1.h> 
#include <TH1F.h> 
#include <TH1I.h> 
#include <TH2I.h> 
#include <TH2F.h> 
#include <TGraph.h> 
#include <TParameter.h>
#include <TTimeStamp.h>

// --- Standard library ---

// --- AliRoot header files ---
#include "AliESDEvent.h"
#include "AliLog.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBEntry.h"
#include "AliADQADataMakerRec.h"
#include "AliQAChecker.h"
#include "AliRawReader.h"
#include "AliADRawStream.h"
#include "AliADdigit.h"
#include "AliADConst.h"
#include "AliADReconstructor.h"
//#include "AliADTrending.h"
#include "AliADCalibData.h"
#include "AliCTPTimeParams.h"
#include "event.h"

ClassImp(AliADQADataMakerRec)
           
//____________________________________________________________________________ 
AliADQADataMakerRec::AliADQADataMakerRec() : 
AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kAD), "AD Quality Assurance Data Maker"),
  fCalibData(0x0),
  fTrendingUpdateTime(0), 
  fCycleStartTime(0), 
  fCycleStopTime(0),
  fTimeSlewing(0)
    
{
  // Constructor
   
  AliDebug(AliQAv1::GetQADebugLevel(), "Construct AD QA Object");

  for(Int_t i=0; i<16; i++){  
    fEven[i] = 0;   
    fOdd[i]  = 0;
  }
  
  for(Int_t i=0; i<32; i++){  
    fADCmean[i] = 0.0;   }	
}

//____________________________________________________________________________ 
AliADQADataMakerRec::AliADQADataMakerRec(const AliADQADataMakerRec& qadm) :
  AliQADataMakerRec(),
  fCalibData(0x0),
  fTrendingUpdateTime(0), 
  fCycleStartTime(0), 
  fCycleStopTime(0),
  fTimeSlewing(0)
  
{
  // Copy constructor 
  
  SetName((const char*)qadm.GetName()) ; 
  SetTitle((const char*)qadm.GetTitle()); 
}

//__________________________________________________________________
AliADQADataMakerRec& AliADQADataMakerRec::operator = (const AliADQADataMakerRec& qadm )
{
  // Equal operator
  
  this->~AliADQADataMakerRec();
  new(this) AliADQADataMakerRec(qadm);
  return *this;
}

//____________________________________________________________________________
AliADCalibData* AliADQADataMakerRec::GetCalibData() const

{
  AliCDBManager *man = AliCDBManager::Instance();

  AliCDBEntry *entry=0;

  //entry = man->Get("AD/Calib/Data",fRun);
  //if(!entry){
    //AliWarning("Load of calibration data from default storage failed!");
    //AliWarning("Calibration data will be loaded from local storage ($ALICE_ROOT)");
	
    man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
    entry = man->Get("AD/Calib/Data",fRun);
  //}
  // Retrieval of data in directory AD/Calib/Data:

  AliADCalibData *calibdata = 0;

  if (entry) calibdata = (AliADCalibData*) entry->GetObject();
  if (!calibdata)  AliFatal("No calibration data from calibration database !");

  return calibdata;
}
//____________________________________________________________________________ 
void AliADQADataMakerRec::StartOfDetectorCycle()
{
  // Detector specific actions at start of cycle
  
  // Reset of the histogram used - to have the trend versus time -
 
  fCalibData = GetCalibData();
 
  AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");
  if (!entry) AliFatal("CTP timing parameters are not found in OCDB !");
  AliCTPTimeParams *ctpParams = (AliCTPTimeParams*)entry->GetObject();
  Float_t l1Delay = (Float_t)ctpParams->GetDelayL1L0()*25.0;

  AliCDBEntry *entry1 = AliCDBManager::Instance()->Get("GRP/CTP/TimeAlign");
  if (!entry1) AliFatal("CTP time-alignment is not found in OCDB !");
  AliCTPTimeParams *ctpTimeAlign = (AliCTPTimeParams*)entry1->GetObject();
  l1Delay += ((Float_t)ctpTimeAlign->GetDelayL1L0()*25.0);
  /*/
  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);
    fTimeOffset[i] = (
		      //	((Float_t)fCalibData->GetTriggerCountOffset(board) -
		      //	(Float_t)fCalibData->GetRollOver(board))*25.0 +
		      //     fCalibData->GetTimeOffset(i) -
		      //     l1Delay+
		      //delays->GetBinContent(i+1)//+
		      //      kV0Offset
		      0
		      );
    //		      AliInfo(Form(" fTimeOffset[%d] = %f  kV0offset %f",i,fTimeOffset[i],kV0Offset));
  }

 
 
  
 	
  TTimeStamp currentTime;
  fCycleStartTime = currentTime.GetSec();
 
  //  fNTotEvents = 0;
}
//____________________________________________________________________________ 
void AliADQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
{
  // 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();
  }

  for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
    if (! IsValidEventSpecie(specie, list)) continue ;
    SetEventSpecie(AliRecoParam::ConvertIndex(specie));
    if(task == AliQAv1::kRAWS) {
    } else if (task == AliQAv1::kESDS) {
    }
  }
}

//____________________________________________________________________________ 
void AliADQADataMakerRec::InitESDs()
{
  // Creates histograms to control ESDs
}

//____________________________________________________________________________ 
void AliADQADataMakerRec::InitDigits()
{

}

//____________________________________________________________________________
void AliADQADataMakerRec::MakeDigits()
{

}

//____________________________________________________________________________
void AliADQADataMakerRec::MakeDigits(TTree* /*digitTree*/)
{

}


//____________________________________________________________________________
void AliADQADataMakerRec::MakeESDs(AliESDEvent* /*esd*/)
{
 
}

//____________________________________________________________________________ 
void AliADQADataMakerRec::InitRaws()
{
  // Creates RAW histograms in Raws subdir

  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 kNChannelBins  =   16;
  const Float_t kChannelMin    =    0;
  const Float_t kChannelMax    =   16;
  const Int_t kNPedestalBins =  200;
  const Float_t kPedestalMin   =    0;
  const Float_t kPedestalMax   =  200; 
  const Int_t kNPairBins  =   8;
  const Float_t kPairMin    =    0;
  const Float_t kPairMax    =   8;

  TH2I * h2i;
  TH2F * h2d;
  TH1I * h1i;
  TH1F * h1d;

  int iHisto =0;

  // Creation of Cell Multiplicity Histograms
  h1i = new TH1I("H1I_Multiplicity_ADA", "Number of fired cells in ADA;# of Cells;Entries", 10, 0, 10) ;  
  Add2RawsList(h1i,kMultiADA, !expert, image, saveCorr);   iHisto++;
  h1i = new TH1I("H1I_Multiplicity_ADC", "Number of fired cells in ADC;# of Cells;Entries", 10, 0, 10) ;  
  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) ;  
  Add2RawsList(h1d,kChargeADA, !expert, image, saveCorr);   iHisto++;
  h1d = new TH1F("H1D_Charge_ADC", "Total Charge in ADC;Charge [ADC counts];Counts", 4000, 0, 50000) ;  
  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++;
   

  // 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);
  Add2RawsList(h2d,kChargeEoI, !expert, image, saveCorr); iHisto++;

  for(Int_t iInt=0;iInt<kNintegrator;iInt++){
    // Creation of Pedestal histograms 
    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++;
	

    // 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);
    Add2RawsList(h2i,(iInt == 0 ? kChargeEoIInt0 : kChargeEoIInt1), !expert, image, saveCorr); iHisto++;
    
  }	
  
  // Creation of Time histograms 
  h2i = new TH2I("H2I_Width", "HPTDC Width;Channel;Width [ns]",kNChannelBins, kChannelMin, kChannelMax, kNTdcWidthBins, kTdcWidthMin, kTdcWidthMax);
  Add2RawsList(h2i,kWidth, !expert, image, saveCorr); iHisto++;
  
  h2i = new TH2I("H2I_Width_BB", "HPTDC Width w/ BB Flag condition;Channel;Width [ns]",kNChannelBins, kChannelMin, kChannelMax, kNTdcWidthBins, kTdcWidthMin, kTdcWidthMax);
  Add2RawsList(h2i,kWidthBB, !expert, image, saveCorr); iHisto++;

  h2i = new TH2I("H2I_Width_BG", "HPTDC Width w/ BG Flag condition;Channel;Width [ns]",kNChannelBins, kChannelMin, kChannelMax, kNTdcWidthBins, kTdcWidthMin, kTdcWidthMax);
  Add2RawsList(h2i,kWidthBG, !expert, image, saveCorr); iHisto++;

  h2i = new TH2I("H2I_HPTDCTime", "HPTDC Time;Channel;Leading Time [ns]",kNChannelBins, kChannelMin, kChannelMax, kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax);
  Add2RawsList(h2i,kHPTDCTime, !expert, image, saveCorr); iHisto++;
  
  h2i = new TH2I("H2I_HPTDCTime_BB", "HPTDC Time w/ BB Flag condition;Channel;Leading Time [ns]",kNChannelBins, kChannelMin, kChannelMax, kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax);
  Add2RawsList(h2i,kHPTDCTimeBB, !expert, image, !saveCorr); iHisto++;

  h2i = new TH2I("H2I_HPTDCTime_BG", "HPTDC Time w/ BG Flag condition;Channel;Leading Time [ns]",kNChannelBins, kChannelMin, kChannelMax, kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax);
  Add2RawsList(h2i,kHPTDCTimeBG, !expert, image, !saveCorr); iHisto++;
	
  h1d = new TH1F("H1D_ADA_Time", "ADA Time;Time [ns];Counts",kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax);
  Add2RawsList(h1d,kADATime, !expert, image, saveCorr); iHisto++;
	
  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.);
  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++;
  
  //Creation of pair coincidence histograms
  h1i = new TH1I("H1I_MultiCoincidence_ADA", "Number of coincidences in ADA;# of Coincidences;Entries", 5, 0, 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) ;  
  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++;
  
  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++;

  //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 );
  Add2RawsList(h2d,kBBFlagVsClock, !expert, image, saveCorr); iHisto++;
	
  h2d = new TH2F("H2D_BGFlagVsClock", "BG-Flags Versus LHC-Clock;Channel;LHC Clocks",kNChannelBins, kChannelMin, kChannelMax,21, -10.5, 10.5 );
  Add2RawsList(h2d,kBGFlagVsClock, !expert, image, saveCorr); iHisto++;

  for(Int_t iInt=0;iInt<kNintegrator;iInt++){
  	h2d = new TH2F(Form("H2D_ChargeVsClock_Int%d",iInt), Form("Charge Versus LHC-Clock (Int%d);Channel;LHCClock;Charge [ADC counts]",iInt),kNChannelBins, kChannelMin, kChannelMax,21, -10.5, 10.5 );
  	Add2RawsList(h2d,(iInt == 0 ? kChargeVsClockInt0 : kChargeVsClockInt1 ), expert, !image, !saveCorr); iHisto++;
	}
  
  h2d = new TH2F("H2D_BBFlagPerChannel", "BB-Flags Versus Channel;Channel;BB Flags Count",kNChannelBins, kChannelMin, kChannelMax,22,-0.5,21.5);
  Add2RawsList(h2d,kBBFlagsPerChannel, !expert, image, saveCorr); iHisto++;
  
  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++;
  
  AliDebug(AliQAv1::GetQADebugLevel(), Form("%d Histograms has been added to the Raws List",iHisto));
  //
  ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line
}

//____________________________________________________________________________
void AliADQADataMakerRec::MakeRaws(AliRawReader* rawReader)
{
  // Fills histograms with Raws, computes average ADC values dynamically (pedestal subtracted)
                  
					  
  // Check id histograms already created for this Event Specie
  if ( ! GetRawsData(kPedestalInt0) )
    InitRaws() ;

  rawReader->Reset() ; 
  AliADRawStream* rawStream  = new AliADRawStream(rawReader); 
  if(!(rawStream->Next())) return;  
 
  eventTypeType eventType = rawReader->GetType();

  Int_t    mulADA = 0 ; 
  Int_t    mulADC = 0 ; 
  Double_t timeADA =0., timeADC = 0.;
  Double_t weightADA =0., weightADC = 0.;
  UInt_t   itimeADA=0, itimeADC=0;
  Double_t chargeADA=0., chargeADC=0.;

  Double_t diffTime=-100000.;
  
  Int_t	   pmulADA = 0;
  Int_t	   pmulADC = 0;
  Double_t pDiffTime =-100000.;

  
  switch (eventType){
  case PHYSICS_EVENT:
  
    //    fNTotEvents++; // Use framework counters instead

    Int_t  iFlag=0;
    Int_t  pedestal;
    Int_t  integrator[16];
    Bool_t flagBB[16];	 
    Bool_t flagBG[16];	 
    Float_t charge;
    Int_t  offlineCh;
    Float_t adc[16], time[16], width[16], timeCorr[16]; 
    Int_t  iPair=0;

    for(Int_t iChannel=0; iChannel<16; iChannel++) { // BEGIN : Loop over channels
		   
      offlineCh = rawStream->GetOfflineChannel(iChannel);
		   
      // Fill Pedestal histograms
	   
      for(Int_t j=15; j<21; j++) {
	if((rawStream->GetBGFlag(iChannel,j) || rawStream->GetBBFlag(iChannel,j))) iFlag++;
      }

      if(iFlag == 0){ //No Flag found
	for(Int_t j=15; j<21; j++){
	  pedestal= (Int_t) rawStream->GetPedestal(iChannel, j);
	  integrator[offlineCh] = rawStream->GetIntegratorFlag(iChannel, j);

	  FillRawsData((integrator[offlineCh] == 0 ? kPedestalInt0 : kPedestalInt1),offlineCh,pedestal);
	}
      }

      // 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;
      Int_t imax = -1;
      Float_t adcPedSub[21];
      for(Int_t iClock=0; iClock<21; iClock++){
	Bool_t iIntegrator = rawStream->GetIntegratorFlag(iChannel,iClock);
	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)) {
	  adcPedSub[iClock] = 0;
	  continue;
	}
	//		   		if(iClock < GetRecoParam()->GetStartClock() || iClock > GetRecoParam()->GetEndClock()) continue;
	if(iClock < 8 || iClock > 12) continue;
	if(adcPedSub[iClock] > maxadc) {
	  maxadc = adcPedSub[iClock];
	  imax   = iClock;
	}
      }
      //printf(Form("Channel %d (online), %d (offline)\n",iChannel,j)); 
      if (imax != -1) {
	//		   		Int_t start = imax - GetRecoParam()->GetNPreClocks();
	Int_t start = imax - 2;
	if (start < 0) start = 0;
	//		   		Int_t end = imax + GetRecoParam()->GetNPostClocks();
	Int_t end = imax + 1;
	if (end > 20) end = 20;
	for(Int_t iClock = start; iClock <= end; iClock++) {
	  adc[offlineCh] += adcPedSub[iClock];
	}
      }
	
		
      Int_t iClock  = imax;
      charge = rawStream->GetPedestal(iChannel,iClock); // Charge at the maximum 

      integrator[offlineCh]    = rawStream->GetIntegratorFlag(iChannel,iClock);
      flagBB[offlineCh]	 = rawStream->GetBBFlag(iChannel, iClock);
      flagBG[offlineCh]	 = rawStream->GetBGFlag(iChannel,iClock );
      Int_t board = AliADCalibData::GetBoardNumber(offlineCh);
      time[offlineCh] = rawStream->GetTime(iChannel)*fCalibData->GetTimeResolution(board);
      width[offlineCh] = rawStream->GetWidth(iChannel)*fCalibData->GetWidthResolution(board);

      if (time[offlineCh] >= 1e-6) FillRawsData(kChargeEoI,offlineCh,adc[offlineCh]);

      FillRawsData((integrator[offlineCh] == 0 ? kChargeEoIInt0 : kChargeEoIInt1),offlineCh,charge);

      Float_t sigma = fCalibData->GetSigma(offlineCh+16*integrator[offlineCh]);
		  
      if((adc[offlineCh] > 2.*sigma) && !(time[offlineCh] <1.e-6)){ 
	if(offlineCh<8) {
	  mulADC++;
	  chargeADC += adc[offlineCh];
	  
	} else {
	  mulADA++;
	  chargeADA += adc[offlineCh];
	}
      }
		   
  
      // Fill HPTDC Time Histograms
      timeCorr[offlineCh] = CorrectLeadingTime(offlineCh,time[offlineCh],adc[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
      if(timeCorr[offlineCh]>-1024 + 1.e-6){
	//Float_t nphe = adc[offlineCh]*kChargePerADC/(fCalibData->GetGain(offlineCh)*TMath::Qe());
	Float_t timeErr = 1;
	/*/
	if (nphe>1.e-6) timeErr = TMath::Sqrt(kIntTimeRes*kIntTimeRes+
					      p1*p1/nphe+
					      p2*p2*(fTimeSlewing->GetParameter(0)*fTimeSlewing->GetParameter(1))*(fTimeSlewing->GetParameter(0)*fTimeSlewing->GetParameter(1))*
					      TMath::Power(adc[offlineCh]/fCalibData->GetCalibDiscriThr(offlineCh,kTRUE),2.*(fTimeSlewing->GetParameter(1)-1.))/
					      (fCalibData->GetCalibDiscriThr(offlineCh,kTRUE)*fCalibData->GetCalibDiscriThr(offlineCh,kTRUE)));/*/

	if (timeErr>1.e-6) {
	  if (offlineCh<8) {
	    itimeADC++;
	    timeADC += timeCorr[offlineCh]/(timeErr*timeErr);
	    weightADC += 1./(timeErr*timeErr);
	  }else{
	    itimeADA++;
	    timeADA += timeCorr[offlineCh]/(timeErr*timeErr);
	    weightADA += 1./(timeErr*timeErr);
	  }
	}
      }
      
      // Fill Flag and Charge Versus LHC-Clock histograms
      Int_t nbbFlag = 0;
      Int_t nbgFlag = 0;
      
      for(Int_t iEvent=0; iEvent<21; iEvent++){
	charge = rawStream->GetPedestal(iChannel,iEvent);
	Int_t intgr = rawStream->GetIntegratorFlag(iChannel,iEvent);
	Bool_t bbFlag	  = rawStream->GetBBFlag(iChannel, iEvent);
	Bool_t bgFlag	  = rawStream->GetBGFlag(iChannel,iEvent );
	if(bbFlag) nbbFlag++;
	if(bgFlag) nbgFlag++;
	
	FillRawsData((intgr == 0 ? kChargeVsClockInt0 : kChargeVsClockInt1 ), offlineCh,(float)iEvent-10,(float)charge);
	FillRawsData(kBBFlagVsClock, offlineCh,(float)iEvent-10,(float)bbFlag);
	FillRawsData(kBGFlagVsClock, offlineCh,(float)iEvent-10,(float)bgFlag);
	
      }
      FillRawsData(kBBFlagsPerChannel, offlineCh,nbbFlag);
      FillRawsData(kBGFlagsPerChannel, offlineCh,nbgFlag);
      
      FillRawsData(kHPTDCTime,offlineCh,timeCorr[offlineCh]);
      FillRawsData(kWidth,offlineCh,width[offlineCh]);
      //if(flagBB[offlineCh]) {
      if(nbbFlag > 0){
	FillRawsData(kHPTDCTimeBB,offlineCh,timeCorr[offlineCh]);
	FillRawsData(kWidthBB,offlineCh,width[offlineCh]);
      }
      //if(flagBG[offlineCh]) {
      if(nbgFlag > 0){
	FillRawsData(kHPTDCTimeBG,offlineCh,timeCorr[offlineCh]);
	FillRawsData(kWidthBG,offlineCh,width[offlineCh]);
      }
      

    }// 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);
		}
	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);
		}
	FillRawsData(kPairDiffCharge,iPair,TMath::Abs(adc[offlineCh]-adc[offlineCh+4]));
	iPair++;	
	}
    FillRawsData(kNCoincADA,pmulADA);
    FillRawsData(kNCoincADC,pmulADC);
	
	
    if(weightADA>1.e-6) timeADA /= weightADA; 
    else timeADA = -1024.;
    if(weightADC>1.e-6) timeADC /= weightADC;
    else timeADC = -1024.;
    if(timeADA<-1024.+1.e-6 || timeADC<-1024.+1.e-6) diffTime = -1024.;
    else diffTime = timeADA - timeADC;
    

		
    FillRawsData(kADATime,timeADA);
    FillRawsData(kADCTime,timeADC);
    FillRawsData(kDiffTime,diffTime);
    FillRawsData(kTimeADAADC,timeADA,timeADC);

    FillRawsData(kMultiADA,mulADA);
    FillRawsData(kMultiADC,mulADC);

    FillRawsData(kChargeADA,chargeADA);
    FillRawsData(kChargeADC,chargeADC);
    FillRawsData(kChargeAD,chargeADA + chargeADC);
	    
    break;
  } // END of SWITCH : EVENT TYPE 
	
  TParameter<double> * p = dynamic_cast<TParameter<double>*>(GetParameterList()->FindObject(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), GetRawsData(kMultiADA)->GetName()))) ; 
  if (p) p->SetVal((double)mulADA) ; 

  p = dynamic_cast<TParameter<double>*>(GetParameterList()->FindObject(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), GetRawsData(kMultiADC)->GetName()))) ; 
  if (p) p->SetVal((double)mulADC) ;                     

  p = dynamic_cast<TParameter<double>*>(GetParameterList()->FindObject(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), GetRawsData(kChargeADA)->GetName()))) ; 
  if (p) p->SetVal((double)chargeADA) ; 

  p = dynamic_cast<TParameter<double>*>(GetParameterList()->FindObject(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), GetRawsData(kChargeADC)->GetName()))) ; 
  if (p) p->SetVal((double)chargeADC) ;                     

  p = dynamic_cast<TParameter<double>*>(GetParameterList()->FindObject(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), GetRawsData(kChargeAD)->GetName()))) ; 
  if (p) p->SetVal((double)(chargeADA + chargeADC)) ;                     
	                   	
  p = dynamic_cast<TParameter<double>*>(GetParameterList()->FindObject(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), GetRawsData(kADATime)->GetName()))) ; 
  if (p) p->SetVal((double)timeADA) ; 
	
  p = dynamic_cast<TParameter<double>*>(GetParameterList()->FindObject(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), GetRawsData(kADCTime)->GetName()))) ; 
  if (p) p->SetVal((double)timeADC) ;                     
	
  p = dynamic_cast<TParameter<double>*>(GetParameterList()->FindObject(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), GetRawsData(kDiffTime)->GetName()))) ; 
  if (p) p->SetVal((double)diffTime) ;                     
	
  delete rawStream; rawStream = 0x0;      
  //
  IncEvCountCycleRaws();
  IncEvCountTotalRaws();
  //
}

//____________________________________________________________________________ 
Float_t AliADQADataMakerRec::CorrectLeadingTime(Int_t /*i*/, Float_t time, Float_t /*adc*/) const
{
  // Correct the leading time
  // for slewing effect and
  // misalignment of the channels
  if (time < 1e-6) return -1024;

  // Channel alignment and general offset subtraction
  //  if (i < 32) time -= kV0CDelayCables;
  //  time -= fTimeOffset[i];
  //AliInfo(Form("time-offset %f", time));

  // In case of pathological signals
  //if (adc < 1e-6) return time;

  // 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);

  return time;
}

 AliADQADataMakerRec.cxx:1
 AliADQADataMakerRec.cxx:2
 AliADQADataMakerRec.cxx:3
 AliADQADataMakerRec.cxx:4
 AliADQADataMakerRec.cxx:5
 AliADQADataMakerRec.cxx:6
 AliADQADataMakerRec.cxx:7
 AliADQADataMakerRec.cxx:8
 AliADQADataMakerRec.cxx:9
 AliADQADataMakerRec.cxx:10
 AliADQADataMakerRec.cxx:11
 AliADQADataMakerRec.cxx:12
 AliADQADataMakerRec.cxx:13
 AliADQADataMakerRec.cxx:14
 AliADQADataMakerRec.cxx:15
 AliADQADataMakerRec.cxx:16
 AliADQADataMakerRec.cxx:17
 AliADQADataMakerRec.cxx:18
 AliADQADataMakerRec.cxx:19
 AliADQADataMakerRec.cxx:20
 AliADQADataMakerRec.cxx:21
 AliADQADataMakerRec.cxx:22
 AliADQADataMakerRec.cxx:23
 AliADQADataMakerRec.cxx:24
 AliADQADataMakerRec.cxx:25
 AliADQADataMakerRec.cxx:26
 AliADQADataMakerRec.cxx:27
 AliADQADataMakerRec.cxx:28
 AliADQADataMakerRec.cxx:29
 AliADQADataMakerRec.cxx:30
 AliADQADataMakerRec.cxx:31
 AliADQADataMakerRec.cxx:32
 AliADQADataMakerRec.cxx:33
 AliADQADataMakerRec.cxx:34
 AliADQADataMakerRec.cxx:35
 AliADQADataMakerRec.cxx:36
 AliADQADataMakerRec.cxx:37
 AliADQADataMakerRec.cxx:38
 AliADQADataMakerRec.cxx:39
 AliADQADataMakerRec.cxx:40
 AliADQADataMakerRec.cxx:41
 AliADQADataMakerRec.cxx:42
 AliADQADataMakerRec.cxx:43
 AliADQADataMakerRec.cxx:44
 AliADQADataMakerRec.cxx:45
 AliADQADataMakerRec.cxx:46
 AliADQADataMakerRec.cxx:47
 AliADQADataMakerRec.cxx:48
 AliADQADataMakerRec.cxx:49
 AliADQADataMakerRec.cxx:50
 AliADQADataMakerRec.cxx:51
 AliADQADataMakerRec.cxx:52
 AliADQADataMakerRec.cxx:53
 AliADQADataMakerRec.cxx:54
 AliADQADataMakerRec.cxx:55
 AliADQADataMakerRec.cxx:56
 AliADQADataMakerRec.cxx:57
 AliADQADataMakerRec.cxx:58
 AliADQADataMakerRec.cxx:59
 AliADQADataMakerRec.cxx:60
 AliADQADataMakerRec.cxx:61
 AliADQADataMakerRec.cxx:62
 AliADQADataMakerRec.cxx:63
 AliADQADataMakerRec.cxx:64
 AliADQADataMakerRec.cxx:65
 AliADQADataMakerRec.cxx:66
 AliADQADataMakerRec.cxx:67
 AliADQADataMakerRec.cxx:68
 AliADQADataMakerRec.cxx:69
 AliADQADataMakerRec.cxx:70
 AliADQADataMakerRec.cxx:71
 AliADQADataMakerRec.cxx:72
 AliADQADataMakerRec.cxx:73
 AliADQADataMakerRec.cxx:74
 AliADQADataMakerRec.cxx:75
 AliADQADataMakerRec.cxx:76
 AliADQADataMakerRec.cxx:77
 AliADQADataMakerRec.cxx:78
 AliADQADataMakerRec.cxx:79
 AliADQADataMakerRec.cxx:80
 AliADQADataMakerRec.cxx:81
 AliADQADataMakerRec.cxx:82
 AliADQADataMakerRec.cxx:83
 AliADQADataMakerRec.cxx:84
 AliADQADataMakerRec.cxx:85
 AliADQADataMakerRec.cxx:86
 AliADQADataMakerRec.cxx:87
 AliADQADataMakerRec.cxx:88
 AliADQADataMakerRec.cxx:89
 AliADQADataMakerRec.cxx:90
 AliADQADataMakerRec.cxx:91
 AliADQADataMakerRec.cxx:92
 AliADQADataMakerRec.cxx:93
 AliADQADataMakerRec.cxx:94
 AliADQADataMakerRec.cxx:95
 AliADQADataMakerRec.cxx:96
 AliADQADataMakerRec.cxx:97
 AliADQADataMakerRec.cxx:98
 AliADQADataMakerRec.cxx:99
 AliADQADataMakerRec.cxx:100
 AliADQADataMakerRec.cxx:101
 AliADQADataMakerRec.cxx:102
 AliADQADataMakerRec.cxx:103
 AliADQADataMakerRec.cxx:104
 AliADQADataMakerRec.cxx:105
 AliADQADataMakerRec.cxx:106
 AliADQADataMakerRec.cxx:107
 AliADQADataMakerRec.cxx:108
 AliADQADataMakerRec.cxx:109
 AliADQADataMakerRec.cxx:110
 AliADQADataMakerRec.cxx:111
 AliADQADataMakerRec.cxx:112
 AliADQADataMakerRec.cxx:113
 AliADQADataMakerRec.cxx:114
 AliADQADataMakerRec.cxx:115
 AliADQADataMakerRec.cxx:116
 AliADQADataMakerRec.cxx:117
 AliADQADataMakerRec.cxx:118
 AliADQADataMakerRec.cxx:119
 AliADQADataMakerRec.cxx:120
 AliADQADataMakerRec.cxx:121
 AliADQADataMakerRec.cxx:122
 AliADQADataMakerRec.cxx:123
 AliADQADataMakerRec.cxx:124
 AliADQADataMakerRec.cxx:125
 AliADQADataMakerRec.cxx:126
 AliADQADataMakerRec.cxx:127
 AliADQADataMakerRec.cxx:128
 AliADQADataMakerRec.cxx:129
 AliADQADataMakerRec.cxx:130
 AliADQADataMakerRec.cxx:131
 AliADQADataMakerRec.cxx:132
 AliADQADataMakerRec.cxx:133
 AliADQADataMakerRec.cxx:134
 AliADQADataMakerRec.cxx:135
 AliADQADataMakerRec.cxx:136
 AliADQADataMakerRec.cxx:137
 AliADQADataMakerRec.cxx:138
 AliADQADataMakerRec.cxx:139
 AliADQADataMakerRec.cxx:140
 AliADQADataMakerRec.cxx:141
 AliADQADataMakerRec.cxx:142
 AliADQADataMakerRec.cxx:143
 AliADQADataMakerRec.cxx:144
 AliADQADataMakerRec.cxx:145
 AliADQADataMakerRec.cxx:146
 AliADQADataMakerRec.cxx:147
 AliADQADataMakerRec.cxx:148
 AliADQADataMakerRec.cxx:149
 AliADQADataMakerRec.cxx:150
 AliADQADataMakerRec.cxx:151
 AliADQADataMakerRec.cxx:152
 AliADQADataMakerRec.cxx:153
 AliADQADataMakerRec.cxx:154
 AliADQADataMakerRec.cxx:155
 AliADQADataMakerRec.cxx:156
 AliADQADataMakerRec.cxx:157
 AliADQADataMakerRec.cxx:158
 AliADQADataMakerRec.cxx:159
 AliADQADataMakerRec.cxx:160
 AliADQADataMakerRec.cxx:161
 AliADQADataMakerRec.cxx:162
 AliADQADataMakerRec.cxx:163
 AliADQADataMakerRec.cxx:164
 AliADQADataMakerRec.cxx:165
 AliADQADataMakerRec.cxx:166
 AliADQADataMakerRec.cxx:167
 AliADQADataMakerRec.cxx:168
 AliADQADataMakerRec.cxx:169
 AliADQADataMakerRec.cxx:170
 AliADQADataMakerRec.cxx:171
 AliADQADataMakerRec.cxx:172
 AliADQADataMakerRec.cxx:173
 AliADQADataMakerRec.cxx:174
 AliADQADataMakerRec.cxx:175
 AliADQADataMakerRec.cxx:176
 AliADQADataMakerRec.cxx:177
 AliADQADataMakerRec.cxx:178
 AliADQADataMakerRec.cxx:179
 AliADQADataMakerRec.cxx:180
 AliADQADataMakerRec.cxx:181
 AliADQADataMakerRec.cxx:182
 AliADQADataMakerRec.cxx:183
 AliADQADataMakerRec.cxx:184
 AliADQADataMakerRec.cxx:185
 AliADQADataMakerRec.cxx:186
 AliADQADataMakerRec.cxx:187
 AliADQADataMakerRec.cxx:188
 AliADQADataMakerRec.cxx:189
 AliADQADataMakerRec.cxx:190
 AliADQADataMakerRec.cxx:191
 AliADQADataMakerRec.cxx:192
 AliADQADataMakerRec.cxx:193
 AliADQADataMakerRec.cxx:194
 AliADQADataMakerRec.cxx:195
 AliADQADataMakerRec.cxx:196
 AliADQADataMakerRec.cxx:197
 AliADQADataMakerRec.cxx:198
 AliADQADataMakerRec.cxx:199
 AliADQADataMakerRec.cxx:200
 AliADQADataMakerRec.cxx:201
 AliADQADataMakerRec.cxx:202
 AliADQADataMakerRec.cxx:203
 AliADQADataMakerRec.cxx:204
 AliADQADataMakerRec.cxx:205
 AliADQADataMakerRec.cxx:206
 AliADQADataMakerRec.cxx:207
 AliADQADataMakerRec.cxx:208
 AliADQADataMakerRec.cxx:209
 AliADQADataMakerRec.cxx:210
 AliADQADataMakerRec.cxx:211
 AliADQADataMakerRec.cxx:212
 AliADQADataMakerRec.cxx:213
 AliADQADataMakerRec.cxx:214
 AliADQADataMakerRec.cxx:215
 AliADQADataMakerRec.cxx:216
 AliADQADataMakerRec.cxx:217
 AliADQADataMakerRec.cxx:218
 AliADQADataMakerRec.cxx:219
 AliADQADataMakerRec.cxx:220
 AliADQADataMakerRec.cxx:221
 AliADQADataMakerRec.cxx:222
 AliADQADataMakerRec.cxx:223
 AliADQADataMakerRec.cxx:224
 AliADQADataMakerRec.cxx:225
 AliADQADataMakerRec.cxx:226
 AliADQADataMakerRec.cxx:227
 AliADQADataMakerRec.cxx:228
 AliADQADataMakerRec.cxx:229
 AliADQADataMakerRec.cxx:230
 AliADQADataMakerRec.cxx:231
 AliADQADataMakerRec.cxx:232
 AliADQADataMakerRec.cxx:233
 AliADQADataMakerRec.cxx:234
 AliADQADataMakerRec.cxx:235
 AliADQADataMakerRec.cxx:236
 AliADQADataMakerRec.cxx:237
 AliADQADataMakerRec.cxx:238
 AliADQADataMakerRec.cxx:239
 AliADQADataMakerRec.cxx:240
 AliADQADataMakerRec.cxx:241
 AliADQADataMakerRec.cxx:242
 AliADQADataMakerRec.cxx:243
 AliADQADataMakerRec.cxx:244
 AliADQADataMakerRec.cxx:245
 AliADQADataMakerRec.cxx:246
 AliADQADataMakerRec.cxx:247
 AliADQADataMakerRec.cxx:248
 AliADQADataMakerRec.cxx:249
 AliADQADataMakerRec.cxx:250
 AliADQADataMakerRec.cxx:251
 AliADQADataMakerRec.cxx:252
 AliADQADataMakerRec.cxx:253
 AliADQADataMakerRec.cxx:254
 AliADQADataMakerRec.cxx:255
 AliADQADataMakerRec.cxx:256
 AliADQADataMakerRec.cxx:257
 AliADQADataMakerRec.cxx:258
 AliADQADataMakerRec.cxx:259
 AliADQADataMakerRec.cxx:260
 AliADQADataMakerRec.cxx:261
 AliADQADataMakerRec.cxx:262
 AliADQADataMakerRec.cxx:263
 AliADQADataMakerRec.cxx:264
 AliADQADataMakerRec.cxx:265
 AliADQADataMakerRec.cxx:266
 AliADQADataMakerRec.cxx:267
 AliADQADataMakerRec.cxx:268
 AliADQADataMakerRec.cxx:269
 AliADQADataMakerRec.cxx:270
 AliADQADataMakerRec.cxx:271
 AliADQADataMakerRec.cxx:272
 AliADQADataMakerRec.cxx:273
 AliADQADataMakerRec.cxx:274
 AliADQADataMakerRec.cxx:275
 AliADQADataMakerRec.cxx:276
 AliADQADataMakerRec.cxx:277
 AliADQADataMakerRec.cxx:278
 AliADQADataMakerRec.cxx:279
 AliADQADataMakerRec.cxx:280
 AliADQADataMakerRec.cxx:281
 AliADQADataMakerRec.cxx:282
 AliADQADataMakerRec.cxx:283
 AliADQADataMakerRec.cxx:284
 AliADQADataMakerRec.cxx:285
 AliADQADataMakerRec.cxx:286
 AliADQADataMakerRec.cxx:287
 AliADQADataMakerRec.cxx:288
 AliADQADataMakerRec.cxx:289
 AliADQADataMakerRec.cxx:290
 AliADQADataMakerRec.cxx:291
 AliADQADataMakerRec.cxx:292
 AliADQADataMakerRec.cxx:293
 AliADQADataMakerRec.cxx:294
 AliADQADataMakerRec.cxx:295
 AliADQADataMakerRec.cxx:296
 AliADQADataMakerRec.cxx:297
 AliADQADataMakerRec.cxx:298
 AliADQADataMakerRec.cxx:299
 AliADQADataMakerRec.cxx:300
 AliADQADataMakerRec.cxx:301
 AliADQADataMakerRec.cxx:302
 AliADQADataMakerRec.cxx:303
 AliADQADataMakerRec.cxx:304
 AliADQADataMakerRec.cxx:305
 AliADQADataMakerRec.cxx:306
 AliADQADataMakerRec.cxx:307
 AliADQADataMakerRec.cxx:308
 AliADQADataMakerRec.cxx:309
 AliADQADataMakerRec.cxx:310
 AliADQADataMakerRec.cxx:311
 AliADQADataMakerRec.cxx:312
 AliADQADataMakerRec.cxx:313
 AliADQADataMakerRec.cxx:314
 AliADQADataMakerRec.cxx:315
 AliADQADataMakerRec.cxx:316
 AliADQADataMakerRec.cxx:317
 AliADQADataMakerRec.cxx:318
 AliADQADataMakerRec.cxx:319
 AliADQADataMakerRec.cxx:320
 AliADQADataMakerRec.cxx:321
 AliADQADataMakerRec.cxx:322
 AliADQADataMakerRec.cxx:323
 AliADQADataMakerRec.cxx:324
 AliADQADataMakerRec.cxx:325
 AliADQADataMakerRec.cxx:326
 AliADQADataMakerRec.cxx:327
 AliADQADataMakerRec.cxx:328
 AliADQADataMakerRec.cxx:329
 AliADQADataMakerRec.cxx:330
 AliADQADataMakerRec.cxx:331
 AliADQADataMakerRec.cxx:332
 AliADQADataMakerRec.cxx:333
 AliADQADataMakerRec.cxx:334
 AliADQADataMakerRec.cxx:335
 AliADQADataMakerRec.cxx:336
 AliADQADataMakerRec.cxx:337
 AliADQADataMakerRec.cxx:338
 AliADQADataMakerRec.cxx:339
 AliADQADataMakerRec.cxx:340
 AliADQADataMakerRec.cxx:341
 AliADQADataMakerRec.cxx:342
 AliADQADataMakerRec.cxx:343
 AliADQADataMakerRec.cxx:344
 AliADQADataMakerRec.cxx:345
 AliADQADataMakerRec.cxx:346
 AliADQADataMakerRec.cxx:347
 AliADQADataMakerRec.cxx:348
 AliADQADataMakerRec.cxx:349
 AliADQADataMakerRec.cxx:350
 AliADQADataMakerRec.cxx:351
 AliADQADataMakerRec.cxx:352
 AliADQADataMakerRec.cxx:353
 AliADQADataMakerRec.cxx:354
 AliADQADataMakerRec.cxx:355
 AliADQADataMakerRec.cxx:356
 AliADQADataMakerRec.cxx:357
 AliADQADataMakerRec.cxx:358
 AliADQADataMakerRec.cxx:359
 AliADQADataMakerRec.cxx:360
 AliADQADataMakerRec.cxx:361
 AliADQADataMakerRec.cxx:362
 AliADQADataMakerRec.cxx:363
 AliADQADataMakerRec.cxx:364
 AliADQADataMakerRec.cxx:365
 AliADQADataMakerRec.cxx:366
 AliADQADataMakerRec.cxx:367
 AliADQADataMakerRec.cxx:368
 AliADQADataMakerRec.cxx:369
 AliADQADataMakerRec.cxx:370
 AliADQADataMakerRec.cxx:371
 AliADQADataMakerRec.cxx:372
 AliADQADataMakerRec.cxx:373
 AliADQADataMakerRec.cxx:374
 AliADQADataMakerRec.cxx:375
 AliADQADataMakerRec.cxx:376
 AliADQADataMakerRec.cxx:377
 AliADQADataMakerRec.cxx:378
 AliADQADataMakerRec.cxx:379
 AliADQADataMakerRec.cxx:380
 AliADQADataMakerRec.cxx:381
 AliADQADataMakerRec.cxx:382
 AliADQADataMakerRec.cxx:383
 AliADQADataMakerRec.cxx:384
 AliADQADataMakerRec.cxx:385
 AliADQADataMakerRec.cxx:386
 AliADQADataMakerRec.cxx:387
 AliADQADataMakerRec.cxx:388
 AliADQADataMakerRec.cxx:389
 AliADQADataMakerRec.cxx:390
 AliADQADataMakerRec.cxx:391
 AliADQADataMakerRec.cxx:392
 AliADQADataMakerRec.cxx:393
 AliADQADataMakerRec.cxx:394
 AliADQADataMakerRec.cxx:395
 AliADQADataMakerRec.cxx:396
 AliADQADataMakerRec.cxx:397
 AliADQADataMakerRec.cxx:398
 AliADQADataMakerRec.cxx:399
 AliADQADataMakerRec.cxx:400
 AliADQADataMakerRec.cxx:401
 AliADQADataMakerRec.cxx:402
 AliADQADataMakerRec.cxx:403
 AliADQADataMakerRec.cxx:404
 AliADQADataMakerRec.cxx:405
 AliADQADataMakerRec.cxx:406
 AliADQADataMakerRec.cxx:407
 AliADQADataMakerRec.cxx:408
 AliADQADataMakerRec.cxx:409
 AliADQADataMakerRec.cxx:410
 AliADQADataMakerRec.cxx:411
 AliADQADataMakerRec.cxx:412
 AliADQADataMakerRec.cxx:413
 AliADQADataMakerRec.cxx:414
 AliADQADataMakerRec.cxx:415
 AliADQADataMakerRec.cxx:416
 AliADQADataMakerRec.cxx:417
 AliADQADataMakerRec.cxx:418
 AliADQADataMakerRec.cxx:419
 AliADQADataMakerRec.cxx:420
 AliADQADataMakerRec.cxx:421
 AliADQADataMakerRec.cxx:422
 AliADQADataMakerRec.cxx:423
 AliADQADataMakerRec.cxx:424
 AliADQADataMakerRec.cxx:425
 AliADQADataMakerRec.cxx:426
 AliADQADataMakerRec.cxx:427
 AliADQADataMakerRec.cxx:428
 AliADQADataMakerRec.cxx:429
 AliADQADataMakerRec.cxx:430
 AliADQADataMakerRec.cxx:431
 AliADQADataMakerRec.cxx:432
 AliADQADataMakerRec.cxx:433
 AliADQADataMakerRec.cxx:434
 AliADQADataMakerRec.cxx:435
 AliADQADataMakerRec.cxx:436
 AliADQADataMakerRec.cxx:437
 AliADQADataMakerRec.cxx:438
 AliADQADataMakerRec.cxx:439
 AliADQADataMakerRec.cxx:440
 AliADQADataMakerRec.cxx:441
 AliADQADataMakerRec.cxx:442
 AliADQADataMakerRec.cxx:443
 AliADQADataMakerRec.cxx:444
 AliADQADataMakerRec.cxx:445
 AliADQADataMakerRec.cxx:446
 AliADQADataMakerRec.cxx:447
 AliADQADataMakerRec.cxx:448
 AliADQADataMakerRec.cxx:449
 AliADQADataMakerRec.cxx:450
 AliADQADataMakerRec.cxx:451
 AliADQADataMakerRec.cxx:452
 AliADQADataMakerRec.cxx:453
 AliADQADataMakerRec.cxx:454
 AliADQADataMakerRec.cxx:455
 AliADQADataMakerRec.cxx:456
 AliADQADataMakerRec.cxx:457
 AliADQADataMakerRec.cxx:458
 AliADQADataMakerRec.cxx:459
 AliADQADataMakerRec.cxx:460
 AliADQADataMakerRec.cxx:461
 AliADQADataMakerRec.cxx:462
 AliADQADataMakerRec.cxx:463
 AliADQADataMakerRec.cxx:464
 AliADQADataMakerRec.cxx:465
 AliADQADataMakerRec.cxx:466
 AliADQADataMakerRec.cxx:467
 AliADQADataMakerRec.cxx:468
 AliADQADataMakerRec.cxx:469
 AliADQADataMakerRec.cxx:470
 AliADQADataMakerRec.cxx:471
 AliADQADataMakerRec.cxx:472
 AliADQADataMakerRec.cxx:473
 AliADQADataMakerRec.cxx:474
 AliADQADataMakerRec.cxx:475
 AliADQADataMakerRec.cxx:476
 AliADQADataMakerRec.cxx:477
 AliADQADataMakerRec.cxx:478
 AliADQADataMakerRec.cxx:479
 AliADQADataMakerRec.cxx:480
 AliADQADataMakerRec.cxx:481
 AliADQADataMakerRec.cxx:482
 AliADQADataMakerRec.cxx:483
 AliADQADataMakerRec.cxx:484
 AliADQADataMakerRec.cxx:485
 AliADQADataMakerRec.cxx:486
 AliADQADataMakerRec.cxx:487
 AliADQADataMakerRec.cxx:488
 AliADQADataMakerRec.cxx:489
 AliADQADataMakerRec.cxx:490
 AliADQADataMakerRec.cxx:491
 AliADQADataMakerRec.cxx:492
 AliADQADataMakerRec.cxx:493
 AliADQADataMakerRec.cxx:494
 AliADQADataMakerRec.cxx:495
 AliADQADataMakerRec.cxx:496
 AliADQADataMakerRec.cxx:497
 AliADQADataMakerRec.cxx:498
 AliADQADataMakerRec.cxx:499
 AliADQADataMakerRec.cxx:500
 AliADQADataMakerRec.cxx:501
 AliADQADataMakerRec.cxx:502
 AliADQADataMakerRec.cxx:503
 AliADQADataMakerRec.cxx:504
 AliADQADataMakerRec.cxx:505
 AliADQADataMakerRec.cxx:506
 AliADQADataMakerRec.cxx:507
 AliADQADataMakerRec.cxx:508
 AliADQADataMakerRec.cxx:509
 AliADQADataMakerRec.cxx:510
 AliADQADataMakerRec.cxx:511
 AliADQADataMakerRec.cxx:512
 AliADQADataMakerRec.cxx:513
 AliADQADataMakerRec.cxx:514
 AliADQADataMakerRec.cxx:515
 AliADQADataMakerRec.cxx:516
 AliADQADataMakerRec.cxx:517
 AliADQADataMakerRec.cxx:518
 AliADQADataMakerRec.cxx:519
 AliADQADataMakerRec.cxx:520
 AliADQADataMakerRec.cxx:521
 AliADQADataMakerRec.cxx:522
 AliADQADataMakerRec.cxx:523
 AliADQADataMakerRec.cxx:524
 AliADQADataMakerRec.cxx:525
 AliADQADataMakerRec.cxx:526
 AliADQADataMakerRec.cxx:527
 AliADQADataMakerRec.cxx:528
 AliADQADataMakerRec.cxx:529
 AliADQADataMakerRec.cxx:530
 AliADQADataMakerRec.cxx:531
 AliADQADataMakerRec.cxx:532
 AliADQADataMakerRec.cxx:533
 AliADQADataMakerRec.cxx:534
 AliADQADataMakerRec.cxx:535
 AliADQADataMakerRec.cxx:536
 AliADQADataMakerRec.cxx:537
 AliADQADataMakerRec.cxx:538
 AliADQADataMakerRec.cxx:539
 AliADQADataMakerRec.cxx:540
 AliADQADataMakerRec.cxx:541
 AliADQADataMakerRec.cxx:542
 AliADQADataMakerRec.cxx:543
 AliADQADataMakerRec.cxx:544
 AliADQADataMakerRec.cxx:545
 AliADQADataMakerRec.cxx:546
 AliADQADataMakerRec.cxx:547
 AliADQADataMakerRec.cxx:548
 AliADQADataMakerRec.cxx:549
 AliADQADataMakerRec.cxx:550
 AliADQADataMakerRec.cxx:551
 AliADQADataMakerRec.cxx:552
 AliADQADataMakerRec.cxx:553
 AliADQADataMakerRec.cxx:554
 AliADQADataMakerRec.cxx:555
 AliADQADataMakerRec.cxx:556
 AliADQADataMakerRec.cxx:557
 AliADQADataMakerRec.cxx:558
 AliADQADataMakerRec.cxx:559
 AliADQADataMakerRec.cxx:560
 AliADQADataMakerRec.cxx:561
 AliADQADataMakerRec.cxx:562
 AliADQADataMakerRec.cxx:563
 AliADQADataMakerRec.cxx:564
 AliADQADataMakerRec.cxx:565
 AliADQADataMakerRec.cxx:566
 AliADQADataMakerRec.cxx:567
 AliADQADataMakerRec.cxx:568
 AliADQADataMakerRec.cxx:569
 AliADQADataMakerRec.cxx:570
 AliADQADataMakerRec.cxx:571
 AliADQADataMakerRec.cxx:572
 AliADQADataMakerRec.cxx:573
 AliADQADataMakerRec.cxx:574
 AliADQADataMakerRec.cxx:575
 AliADQADataMakerRec.cxx:576
 AliADQADataMakerRec.cxx:577
 AliADQADataMakerRec.cxx:578
 AliADQADataMakerRec.cxx:579
 AliADQADataMakerRec.cxx:580
 AliADQADataMakerRec.cxx:581
 AliADQADataMakerRec.cxx:582
 AliADQADataMakerRec.cxx:583
 AliADQADataMakerRec.cxx:584
 AliADQADataMakerRec.cxx:585
 AliADQADataMakerRec.cxx:586
 AliADQADataMakerRec.cxx:587
 AliADQADataMakerRec.cxx:588
 AliADQADataMakerRec.cxx:589
 AliADQADataMakerRec.cxx:590
 AliADQADataMakerRec.cxx:591
 AliADQADataMakerRec.cxx:592
 AliADQADataMakerRec.cxx:593
 AliADQADataMakerRec.cxx:594
 AliADQADataMakerRec.cxx:595
 AliADQADataMakerRec.cxx:596
 AliADQADataMakerRec.cxx:597
 AliADQADataMakerRec.cxx:598
 AliADQADataMakerRec.cxx:599
 AliADQADataMakerRec.cxx:600
 AliADQADataMakerRec.cxx:601
 AliADQADataMakerRec.cxx:602
 AliADQADataMakerRec.cxx:603
 AliADQADataMakerRec.cxx:604
 AliADQADataMakerRec.cxx:605
 AliADQADataMakerRec.cxx:606
 AliADQADataMakerRec.cxx:607
 AliADQADataMakerRec.cxx:608
 AliADQADataMakerRec.cxx:609
 AliADQADataMakerRec.cxx:610
 AliADQADataMakerRec.cxx:611
 AliADQADataMakerRec.cxx:612
 AliADQADataMakerRec.cxx:613
 AliADQADataMakerRec.cxx:614
 AliADQADataMakerRec.cxx:615
 AliADQADataMakerRec.cxx:616
 AliADQADataMakerRec.cxx:617
 AliADQADataMakerRec.cxx:618
 AliADQADataMakerRec.cxx:619
 AliADQADataMakerRec.cxx:620
 AliADQADataMakerRec.cxx:621
 AliADQADataMakerRec.cxx:622
 AliADQADataMakerRec.cxx:623
 AliADQADataMakerRec.cxx:624
 AliADQADataMakerRec.cxx:625
 AliADQADataMakerRec.cxx:626
 AliADQADataMakerRec.cxx:627
 AliADQADataMakerRec.cxx:628
 AliADQADataMakerRec.cxx:629
 AliADQADataMakerRec.cxx:630
 AliADQADataMakerRec.cxx:631
 AliADQADataMakerRec.cxx:632
 AliADQADataMakerRec.cxx:633
 AliADQADataMakerRec.cxx:634
 AliADQADataMakerRec.cxx:635
 AliADQADataMakerRec.cxx:636
 AliADQADataMakerRec.cxx:637
 AliADQADataMakerRec.cxx:638
 AliADQADataMakerRec.cxx:639
 AliADQADataMakerRec.cxx:640
 AliADQADataMakerRec.cxx:641
 AliADQADataMakerRec.cxx:642
 AliADQADataMakerRec.cxx:643
 AliADQADataMakerRec.cxx:644
 AliADQADataMakerRec.cxx:645
 AliADQADataMakerRec.cxx:646
 AliADQADataMakerRec.cxx:647
 AliADQADataMakerRec.cxx:648
 AliADQADataMakerRec.cxx:649
 AliADQADataMakerRec.cxx:650
 AliADQADataMakerRec.cxx:651
 AliADQADataMakerRec.cxx:652
 AliADQADataMakerRec.cxx:653
 AliADQADataMakerRec.cxx:654
 AliADQADataMakerRec.cxx:655
 AliADQADataMakerRec.cxx:656
 AliADQADataMakerRec.cxx:657
 AliADQADataMakerRec.cxx:658
 AliADQADataMakerRec.cxx:659
 AliADQADataMakerRec.cxx:660
 AliADQADataMakerRec.cxx:661
 AliADQADataMakerRec.cxx:662
 AliADQADataMakerRec.cxx:663
 AliADQADataMakerRec.cxx:664
 AliADQADataMakerRec.cxx:665
 AliADQADataMakerRec.cxx:666
 AliADQADataMakerRec.cxx:667
 AliADQADataMakerRec.cxx:668
 AliADQADataMakerRec.cxx:669
 AliADQADataMakerRec.cxx:670
 AliADQADataMakerRec.cxx:671
 AliADQADataMakerRec.cxx:672
 AliADQADataMakerRec.cxx:673
 AliADQADataMakerRec.cxx:674
 AliADQADataMakerRec.cxx:675
 AliADQADataMakerRec.cxx:676