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.


//  Authors:
//
//  Luciano Diaz Gonzalez <luciano.diaz@nucleares.unam.mx> (ICN-UNAM)
//  Mario Rodriguez Cahuantzi <mrodrigu@mail.cern.ch> (FCFM-BUAP)
//  Arturo Fernandez Tellez <afernan@mail.cern.ch (FCFM-BUAP)
//
//  Created: June 13th 2008
//---
// Last update: Sept. 29th. 2011 (by Mario RC: mrodrigu@mail.cern.ch) 
//	--> ACOMultiSL0_DQM_Shifter filling histogram fixed
//	--> Expert histogram updated: 2 histograms (Checks the hits for SL0 and AMU mode)
//	--> To be include in the next update: threshold settings from AliACORDEQAThreshold class (not yet)
// Last update: May 5th. 2011 (by Mario RC: mrodrigu@mail.cern.ch) -->Creates QA expert histograms 
// and QA-shifter histograms also with threshold lines and visual alarm
// Last Update: Aug. 27th 2008 --> Implementation to declare QA expert histogram
// Last update: Nov. 14t 2009 --> MRC <mrodrigu@mail.cern.ch> (FCFM-BUAP) 
//			|--> Change in Multiplicity histogram for AMORE (to detect empty triggers events of ACORDE)



// --- ROOT system ---
#include <TClonesArray.h>
#include <TFile.h> 
#include <TH1F.h> 
#include <TDirectory.h>
#include <TPaveText.h>
// --- Standard library ---

// --- AliRoot header files ---
#include "AliESDEvent.h"
#include "AliLog.h"
#include "AliACORDEdigit.h" 
#include "AliACORDEhit.h"
#include "AliACORDEQADataMakerRec.h"
#include "AliQAChecker.h"
#include "AliACORDERawReader.h"
#include "AliACORDERawStream.h"
ClassImp(AliACORDEQADataMakerRec)
           
//____________________________________________________________________________ 
 AliACORDEQADataMakerRec::AliACORDEQADataMakerRec():AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kACORDE), "ACORDE Quality Assurance Data Maker")
{

}
//____________________________________________________________________________ 
AliACORDEQADataMakerRec::AliACORDEQADataMakerRec(const AliACORDEQADataMakerRec& qadm):
  AliQADataMakerRec()
{
  SetName((const char*)qadm.GetName()) ; 
  SetTitle((const char*)qadm.GetTitle()); 
}

//__________________________________________________________________
AliACORDEQADataMakerRec::~AliACORDEQADataMakerRec()
{
}

//__________________________________________________________________
AliACORDEQADataMakerRec& AliACORDEQADataMakerRec::operator = (const AliACORDEQADataMakerRec& qadm )
{
  // Equal operator.
  this->~AliACORDEQADataMakerRec();
  new(this) AliACORDEQADataMakerRec(qadm);
  return *this;
}
//____________________________________________________________________________
void AliACORDEQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
{
  //Detector specific actions at end of cycle
  // do the QA checking
  ResetEventTrigClasses(); // reset triggers list to select all histos
  // Update for DQM GUI
  //

  for (Int_t specie = 0; specie < AliRecoParam::kNSpecies ; specie++) {
    if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) ) continue ;
    // 
    // RS Set event specie
    SetEventSpecie(AliRecoParam::ConvertIndex(specie));
    //
    for (int itc=-1;itc<GetNTrigClasses();itc++) { // RS Loop over the trigger classes
      //
      	TObjArray * parr = GetRawsDataOfTrigClass(itc);
      	if (!parr) continue;
      	TObjArray &harr = *parr;
      	TH1* h0 = (TH1*)harr[0];
      	TH1* h2 = (TH1*)harr[2];
      	if (!h0 || !h2) continue;

      	Double_t integralSL0 = 0;
      	Double_t integralAMU = 0;

	if ((itc==-1) && ( (integralAMU=h2->Integral()==0) || (integralSL0=h0->Integral()==0) ) ) continue;

	Float_t maxSL0 = 1*h0->GetMaximum();
	Float_t scaleSL0 = 0.;
	if (maxSL0!=0) scaleSL0 = 1/maxSL0;
	else scaleSL0 = 1.;
	h0->Scale(scaleSL0);


	Float_t maxAMU = 1*h2->GetMaximum();
	Float_t scaleAMU = 0.;
	if (maxAMU!=0) scaleAMU = 1/maxAMU;
	else scaleAMU = 1.;
	h2->Scale(scaleAMU);
      
	Int_t indexActiveModuleSL0 = 0;
	Int_t indexActiveModuleAMU = 0;

	for(Int_t iModule = 0; iModule < 60; iModule++){
		if (h0->GetBinContent(iModule) > 0) indexActiveModuleSL0++;
		if (h2->GetBinContent(iModule) > 0) indexActiveModuleAMU++;
	}
	
	Float_t meanHitsSL0 = 0.;
	Float_t meanHitsAMU = 0.;
	//if ((indexActiveModuleSL0==0) || (indexActiveModuleAMU == 0)) continue;
	if (indexActiveModuleAMU == 0) continue;

	meanHitsSL0 = h0->Integral()/indexActiveModuleSL0;
	meanHitsAMU = h2->Integral()/indexActiveModuleAMU;

	TH1* h6 = (TH1*)harr[6];
	//TH1* h7 = (TH1*)harr[7];

	//Int_t goodModulesSL0 = 0;
	//Int_t badModulesSL0 = 0;
	Int_t goodModulesAMU = 0;
	Int_t badModulesAMU = 0;

	for (Int_t imod = 0; imod < 60; imod++)
	{
		//if (TMath::Abs(h0->GetBinContent(imod)/meanHitsSL0-1) < 0.65) goodModulesSL0++;
		//else badModulesSL0++;
		if (meanHitsAMU!=0)
		{
			if (TMath::Abs(h2->GetBinContent(imod)/meanHitsAMU-1) <= 0.90) goodModulesAMU++;
			else badModulesAMU++;
		}

	}
	h6->Fill(1,goodModulesAMU);
	h6->Fill(2,badModulesAMU);

	Float_t maxMod = 1*h6->GetMaximum();
	Float_t scaleMaxMod = 0;
	if (maxMod!=0) scaleMaxMod = 1./maxMod;
	else scaleMaxMod = 0;
	h6->Scale(scaleMaxMod);

        TH1* h4 = (TH1*)harr[4];
        TH1* h5 = (TH1*)harr[5];

	if (h4 && h5 && meanHitsAMU!=0 && meanHitsSL0!=0){
		for (Int_t iModule = 0; iModule < 60; iModule++){
			h4->Fill(h0->GetBinContent(iModule)/meanHitsSL0-1);
			h5->Fill(h2->GetBinContent(iModule)/meanHitsAMU-1);
		}
	}

    } // end of trigger classes loop
  } // end specie loop
  // QA Checker standar (to be updated)
  //
  AliQAChecker::Instance()->Run(AliQAv1::kACORDE, task, list) ;
}

//____________________________________________________________________________
void AliACORDEQADataMakerRec::StartOfDetectorCycle()
{
  //Detector specific actions at start of cycle

}
 
//____________________________________________________________________________ 
void AliACORDEQADataMakerRec::InitRaws()
{
  // create Raw histograms in Raw subdir

  	const Bool_t expert   = kTRUE ; 
  	const Bool_t saveCorr = kTRUE ; 
  	const Bool_t image    = kTRUE ; 
	TH1F * fhACORDEBitPatternDQM = new TH1F("ACOHitsSL0_DQM_Shifter","Distribution of ACORDE fired modules for DQM shifter; No. of module; Counts",60,-0.5,59.5);// Hits histogram for QA-shifter ACO-SL0 trigger mode
        TH1F * fhACORDEMultiplicitySL0DQM = new TH1F("ACOMultiSL0_DQM_Shifter","Multiplicity of ACORDE fired modules for DQM shifter; No. of fired modules; No. of events",62,-1,60); // Multiplicity histo. for QA-shifter ACO-SL0 trigger mode
        TH1F * fhACORDEBitPatternAMUDQM = new TH1F("ACOHitsAMU_DQM_Shifter","Distribution of ACORDE fired modules for DQM shifter; No. of module; Counts",60,-0.5,59.5);// Hits histogram for QA-shifter ACO-SL0 trigger mode
        TH1F * fhACORDEMultiplicityAMUDQM = new TH1F("ACOMultiAMU_DQM_Shifter","Multiplicity of ACORDE fired modules for DQM shifter; No. of fired modules; No. of events",62,-1,60); // Multiplicity histo. for QA-shifter ACO-SL0 trigger mode
        TH1F * fhACORDEBitPatternCheckDQMSL0 = new TH1F("ACOHitsTriggerCheck_DQMExpertSL0","Check the activity of ACORDE's modules; Hits per module/mean of Hits; Counts",100,-3,5); // Check the trigger status of ACORDE (SL0 vs AMU)
        TH1F * fhACORDEBitPatternCheckDQMAMU = new TH1F("ACOHitsTriggerCheck_DQMExpertAMU","Check the activity of ACORDE's modules; Hits per module/mean of Hits; Counts",100,-3,5); // Check the trigger status of ACORDE (SL0 vs AMU)

  //const char *acoStatus[4]={"O.K.","High","Low","Not O.K."};
  const char *acoStatus[2]={"STABLE RATE","FLUCTUATING RATE"};



	TH1F * fhACORDEStatusAMU_DQM = new TH1F("fhACORDEStatusAMU_DQM","Status of rate for ACORDE's modules (AMU mode)",2,1,3);
  	for (Int_t i=0;i<2;i++) 
	{
		fhACORDEStatusAMU_DQM->GetXaxis()->SetBinLabel(i+1,acoStatus[i]); 
	}
	fhACORDEStatusAMU_DQM->SetYTitle("No. of modules (Norm.)");

	Add2RawsList(fhACORDEStatusAMU_DQM,6,!expert,image,!saveCorr);

	fhACORDEStatusAMU_DQM->SetFillColor(kAzure-7);


         // Expert histograms
         // Check the hits multiplicity from trigger configuration
         Add2RawsList(fhACORDEBitPatternCheckDQMSL0,4,expert,image,!saveCorr);
         fhACORDEBitPatternCheckDQMSL0->SetFillColor(kOrange);
	 Add2RawsList(fhACORDEBitPatternCheckDQMAMU,5,expert,image,!saveCorr);
         fhACORDEBitPatternCheckDQMAMU->SetFillColor(kRed+2);

	
	// AMORE diplay settings for shifter on GUI
 
        // For SL0 ACO trigger mode
 
         Add2RawsList(fhACORDEBitPatternDQM,0,expert,image,!saveCorr);
	 ForbidCloning(fhACORDEBitPatternDQM);
         Add2RawsList(fhACORDEMultiplicitySL0DQM,1,expert,image,!saveCorr);
 	 ForbidCloning(fhACORDEMultiplicitySL0DQM);

         // For Hits distribution on ACORDE
 
         fhACORDEBitPatternDQM->SetFillColor(kMagenta+2);
 
         // For ACORDE Multiplicity distribution of fired modules
 
         fhACORDEMultiplicitySL0DQM->SetFillColor(kMagenta);
 
         // For AMU ACO trigger mode
 
         Add2RawsList(fhACORDEBitPatternAMUDQM,2,expert,image,!saveCorr);
         Add2RawsList(fhACORDEMultiplicityAMUDQM,3,expert,image,!saveCorr);
 
         // For Hits distribution on ACORDE
 
         fhACORDEBitPatternAMUDQM->SetFillColor(kViolet+7);
 
         // For ACORDE Multiplicity distribution of fired modules
 
         fhACORDEMultiplicityAMUDQM->SetFillColor(kViolet+6);
 
  //
  ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line
}

//____________________________________________________________________________ 
void AliACORDEQADataMakerRec::InitDigits()
{
  // create Digits histograms in Digits subdir
  
  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 
  TH1F *    fhDigitsModule;
  const char *acoModule[60]={"0_0","0_1","0_2","0_3","0_4","0_5","0_6","0_7","0_8","0_9",
                        "1_0","1_1","1_2","1_3","1_4","1_5","1_6","1_7","1_8","1_9",
                        "2_0","2_1","2_2","2_3","2_4","2_5","2_6","2_7","2_8","2_9",
                        "3_0","3_1","3_2","3_3","3_4","3_5","3_6","3_7","3_8","3_9",
                        "4_0","4_1","4_2","4_3","4_4","4_5","4_6","4_7","4_8","4_9",
                        "5_0","5_1","5_2","5_3","5_4","5_5","5_6","5_7","5_8","5_9"};


  fhDigitsModule = new TH1F("ACORDEBitPatternfromDigits","Distribution of ACORDE from DIGITS;Modules;Counts",60,1,60);
  Add2DigitsList(fhDigitsModule,0,!expert,image);
  for (Int_t i=0;i<60;i++) fhDigitsModule->GetXaxis()->SetBinLabel(i+1,acoModule[i]); 
  //
  ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
}

//____________________________________________________________________________ 

void AliACORDEQADataMakerRec::InitRecPoints()
{
  // create cluster histograms in RecPoint subdir
  // Not needed for ACORDE by now !!!
  //
  ClonePerTrigClass(AliQAv1::kRECPOINTS); // this should be the last line
}

//____________________________________________________________________________
void AliACORDEQADataMakerRec::InitESDs()
{
  //create ESDs histograms in ESDs subdir

  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 
  
  TH1F *    fhESDsSingle;
  TH1F *    fhESDsMulti;
  TH1F *	fhESDsMultiplicity;
  const char *acoModule[60]={"0_0","0_1","0_2","0_3","0_4","0_5","0_6","0_7","0_8","0_9",
                        "1_0","1_1","1_2","1_3","1_4","1_5","1_6","1_7","1_8","1_9",
                        "2_0","2_1","2_2","2_3","2_4","2_5","2_6","2_7","2_8","2_9",
                        "3_0","3_1","3_2","3_3","3_4","3_5","3_6","3_7","3_8","3_9",
                        "4_0","4_1","4_2","4_3","4_4","4_5","4_6","4_7","4_8","4_9",
                        "5_0","5_1","5_2","5_3","5_4","5_5","5_6","5_7","5_8","5_9"};


   fhESDsSingle = new TH1F("ACORDEBitPatternfromESDsSingle","Distribution of ACORDE fired modules from ESDs-Single;Modules;Counts",60,1,60);
   Add2ESDsList(fhESDsSingle,0,!expert,image);

   fhESDsMulti = new TH1F("ACORDEBitPatternfromESDsMulti","Distribution of ACORDE fired modules from ESDs-Multi;Modules;Counts",60,1,60);
   Add2ESDsList(fhESDsMulti,1,!expert,image);
   
   fhESDsMultiplicity = new TH1F("ACORDEMultiplicityfromESD","Number of fired ACORDE modules; No. of fired ACORDE modules;No. of events in ACORDE",60,-0.5,60);
   Add2ESDsList(fhESDsMultiplicity,2,!expert,image);	
   for (Int_t i=0;i<60;i++)
   {
	fhESDsSingle->GetXaxis()->SetBinLabel(i+1,acoModule[i]);
	fhESDsMulti->GetXaxis()->SetBinLabel(i+1,acoModule[i]);
   }
   //
   ClonePerTrigClass(AliQAv1::kESDS); // this should be the last line
}
//____________________________________________________________________________
void AliACORDEQADataMakerRec::MakeRaws(AliRawReader* rawReader)
{
  //fills QA histos for RAW
  IncEvCountCycleRaws();
  IncEvCountTotalRaws();
  rawReader->Reset();
  AliACORDERawStream rawStream(rawReader);
  size_t contSingle=0;
  size_t contMulti=0;
  UInt_t dy[4];

  bool kroSingle[60],kroMulti[60];
  UInt_t tmpDy;

  for(Int_t m=0;m<60;m++) {kroSingle[m]=0;kroMulti[m]=0;}

if(rawStream.Next())
{
        dy[0]=rawStream.GetWord(0);
        dy[1]=rawStream.GetWord(1);
        dy[2]=rawStream.GetWord(2);
        dy[3]=rawStream.GetWord(3);
        tmpDy=dy[0];
        for(Int_t r=0;r<30;r++)
        {
                kroSingle[r] = tmpDy & 1;
                tmpDy>>=1;
        }
        tmpDy=dy[1];
        for(Int_t r=30;r<60;r++)
        {
                kroSingle[r] = tmpDy & 1;
                tmpDy>>=1;
        }
        tmpDy=dy[2];
        for(Int_t r=0;r<30;r++)
        {
                kroMulti[r] = tmpDy & 1;
                tmpDy>>=1;
        }
        tmpDy=dy[3];
        for(Int_t r=30;r<60;r++)
        {
                kroMulti[r] = tmpDy & 1;
                tmpDy>>=1;
        }
        contSingle=0;
	contMulti=0;
        for(Int_t r=0;r<60;r++)
        {
			if(kroSingle[r]==1)
			{
			  FillRawsData(0,r);
			  //FillRawsData(4,r);
			  contSingle++;
			}
			if(kroMulti[r]==1)
			{
			  FillRawsData(2,r);
			  //FillRawsData(6,r);
			  contMulti++;
			}
			
        } 
	FillRawsData(1,contSingle); 
	FillRawsData(3,contMulti); 
	//	FillRawsData(7,contMulti);
}
}
//____________________________________________________________________________
void AliACORDEQADataMakerRec::MakeDigits( TTree *digitsTree)
{
  //fills QA histos for Digits
  IncEvCountCycleDigits();
  IncEvCountTotalDigits();

  if (fDigitsArray) 
    fDigitsArray->Clear() ; 
  else 
    fDigitsArray = new TClonesArray("AliACORDEdigit",1000);
  TBranch * branch = digitsTree->GetBranch("ACORDEdigit");
  if (!branch) {
    AliWarning("ACORDE branch in Digits Tree not found");
  } else {
    branch->SetAddress(&fDigitsArray);
    for(Int_t track = 0 ; track < branch->GetEntries() ; track++) {
      branch->GetEntry(track);
      for(Int_t idigit = 0 ; idigit < fDigitsArray->GetEntriesFast() ; idigit++) {
        AliACORDEdigit *AcoDigit = (AliACORDEdigit*) fDigitsArray->UncheckedAt(idigit);
        if (!AcoDigit) {
          AliError("The unchecked digit doesn't exist");
          continue ;
        }
        FillDigitsData(0,AcoDigit->GetModule()-1);
      }
    }
  }
}

//____________________________________________________________________________
void AliACORDEQADataMakerRec::MakeESDs(AliESDEvent * esd)
{
  //fills QA histos for ESD
  IncEvCountCycleESDs();
  IncEvCountTotalESDs();
  //
  AliESDACORDE * fESDACORDE= esd->GetACORDEData();
  Int_t acoMulti=0;
  for(int i=0;i<60;i++)
  {
    if(fESDACORDE->GetHitChannel(i)) 
	  {
	  FillESDsData(0,i+1);
	  FillESDsData(1,i+1);
	  acoMulti++;
	}
  } FillESDsData(2,acoMulti);

}
 AliACORDEQADataMakerRec.cxx:1
 AliACORDEQADataMakerRec.cxx:2
 AliACORDEQADataMakerRec.cxx:3
 AliACORDEQADataMakerRec.cxx:4
 AliACORDEQADataMakerRec.cxx:5
 AliACORDEQADataMakerRec.cxx:6
 AliACORDEQADataMakerRec.cxx:7
 AliACORDEQADataMakerRec.cxx:8
 AliACORDEQADataMakerRec.cxx:9
 AliACORDEQADataMakerRec.cxx:10
 AliACORDEQADataMakerRec.cxx:11
 AliACORDEQADataMakerRec.cxx:12
 AliACORDEQADataMakerRec.cxx:13
 AliACORDEQADataMakerRec.cxx:14
 AliACORDEQADataMakerRec.cxx:15
 AliACORDEQADataMakerRec.cxx:16
 AliACORDEQADataMakerRec.cxx:17
 AliACORDEQADataMakerRec.cxx:18
 AliACORDEQADataMakerRec.cxx:19
 AliACORDEQADataMakerRec.cxx:20
 AliACORDEQADataMakerRec.cxx:21
 AliACORDEQADataMakerRec.cxx:22
 AliACORDEQADataMakerRec.cxx:23
 AliACORDEQADataMakerRec.cxx:24
 AliACORDEQADataMakerRec.cxx:25
 AliACORDEQADataMakerRec.cxx:26
 AliACORDEQADataMakerRec.cxx:27
 AliACORDEQADataMakerRec.cxx:28
 AliACORDEQADataMakerRec.cxx:29
 AliACORDEQADataMakerRec.cxx:30
 AliACORDEQADataMakerRec.cxx:31
 AliACORDEQADataMakerRec.cxx:32
 AliACORDEQADataMakerRec.cxx:33
 AliACORDEQADataMakerRec.cxx:34
 AliACORDEQADataMakerRec.cxx:35
 AliACORDEQADataMakerRec.cxx:36
 AliACORDEQADataMakerRec.cxx:37
 AliACORDEQADataMakerRec.cxx:38
 AliACORDEQADataMakerRec.cxx:39
 AliACORDEQADataMakerRec.cxx:40
 AliACORDEQADataMakerRec.cxx:41
 AliACORDEQADataMakerRec.cxx:42
 AliACORDEQADataMakerRec.cxx:43
 AliACORDEQADataMakerRec.cxx:44
 AliACORDEQADataMakerRec.cxx:45
 AliACORDEQADataMakerRec.cxx:46
 AliACORDEQADataMakerRec.cxx:47
 AliACORDEQADataMakerRec.cxx:48
 AliACORDEQADataMakerRec.cxx:49
 AliACORDEQADataMakerRec.cxx:50
 AliACORDEQADataMakerRec.cxx:51
 AliACORDEQADataMakerRec.cxx:52
 AliACORDEQADataMakerRec.cxx:53
 AliACORDEQADataMakerRec.cxx:54
 AliACORDEQADataMakerRec.cxx:55
 AliACORDEQADataMakerRec.cxx:56
 AliACORDEQADataMakerRec.cxx:57
 AliACORDEQADataMakerRec.cxx:58
 AliACORDEQADataMakerRec.cxx:59
 AliACORDEQADataMakerRec.cxx:60
 AliACORDEQADataMakerRec.cxx:61
 AliACORDEQADataMakerRec.cxx:62
 AliACORDEQADataMakerRec.cxx:63
 AliACORDEQADataMakerRec.cxx:64
 AliACORDEQADataMakerRec.cxx:65
 AliACORDEQADataMakerRec.cxx:66
 AliACORDEQADataMakerRec.cxx:67
 AliACORDEQADataMakerRec.cxx:68
 AliACORDEQADataMakerRec.cxx:69
 AliACORDEQADataMakerRec.cxx:70
 AliACORDEQADataMakerRec.cxx:71
 AliACORDEQADataMakerRec.cxx:72
 AliACORDEQADataMakerRec.cxx:73
 AliACORDEQADataMakerRec.cxx:74
 AliACORDEQADataMakerRec.cxx:75
 AliACORDEQADataMakerRec.cxx:76
 AliACORDEQADataMakerRec.cxx:77
 AliACORDEQADataMakerRec.cxx:78
 AliACORDEQADataMakerRec.cxx:79
 AliACORDEQADataMakerRec.cxx:80
 AliACORDEQADataMakerRec.cxx:81
 AliACORDEQADataMakerRec.cxx:82
 AliACORDEQADataMakerRec.cxx:83
 AliACORDEQADataMakerRec.cxx:84
 AliACORDEQADataMakerRec.cxx:85
 AliACORDEQADataMakerRec.cxx:86
 AliACORDEQADataMakerRec.cxx:87
 AliACORDEQADataMakerRec.cxx:88
 AliACORDEQADataMakerRec.cxx:89
 AliACORDEQADataMakerRec.cxx:90
 AliACORDEQADataMakerRec.cxx:91
 AliACORDEQADataMakerRec.cxx:92
 AliACORDEQADataMakerRec.cxx:93
 AliACORDEQADataMakerRec.cxx:94
 AliACORDEQADataMakerRec.cxx:95
 AliACORDEQADataMakerRec.cxx:96
 AliACORDEQADataMakerRec.cxx:97
 AliACORDEQADataMakerRec.cxx:98
 AliACORDEQADataMakerRec.cxx:99
 AliACORDEQADataMakerRec.cxx:100
 AliACORDEQADataMakerRec.cxx:101
 AliACORDEQADataMakerRec.cxx:102
 AliACORDEQADataMakerRec.cxx:103
 AliACORDEQADataMakerRec.cxx:104
 AliACORDEQADataMakerRec.cxx:105
 AliACORDEQADataMakerRec.cxx:106
 AliACORDEQADataMakerRec.cxx:107
 AliACORDEQADataMakerRec.cxx:108
 AliACORDEQADataMakerRec.cxx:109
 AliACORDEQADataMakerRec.cxx:110
 AliACORDEQADataMakerRec.cxx:111
 AliACORDEQADataMakerRec.cxx:112
 AliACORDEQADataMakerRec.cxx:113
 AliACORDEQADataMakerRec.cxx:114
 AliACORDEQADataMakerRec.cxx:115
 AliACORDEQADataMakerRec.cxx:116
 AliACORDEQADataMakerRec.cxx:117
 AliACORDEQADataMakerRec.cxx:118
 AliACORDEQADataMakerRec.cxx:119
 AliACORDEQADataMakerRec.cxx:120
 AliACORDEQADataMakerRec.cxx:121
 AliACORDEQADataMakerRec.cxx:122
 AliACORDEQADataMakerRec.cxx:123
 AliACORDEQADataMakerRec.cxx:124
 AliACORDEQADataMakerRec.cxx:125
 AliACORDEQADataMakerRec.cxx:126
 AliACORDEQADataMakerRec.cxx:127
 AliACORDEQADataMakerRec.cxx:128
 AliACORDEQADataMakerRec.cxx:129
 AliACORDEQADataMakerRec.cxx:130
 AliACORDEQADataMakerRec.cxx:131
 AliACORDEQADataMakerRec.cxx:132
 AliACORDEQADataMakerRec.cxx:133
 AliACORDEQADataMakerRec.cxx:134
 AliACORDEQADataMakerRec.cxx:135
 AliACORDEQADataMakerRec.cxx:136
 AliACORDEQADataMakerRec.cxx:137
 AliACORDEQADataMakerRec.cxx:138
 AliACORDEQADataMakerRec.cxx:139
 AliACORDEQADataMakerRec.cxx:140
 AliACORDEQADataMakerRec.cxx:141
 AliACORDEQADataMakerRec.cxx:142
 AliACORDEQADataMakerRec.cxx:143
 AliACORDEQADataMakerRec.cxx:144
 AliACORDEQADataMakerRec.cxx:145
 AliACORDEQADataMakerRec.cxx:146
 AliACORDEQADataMakerRec.cxx:147
 AliACORDEQADataMakerRec.cxx:148
 AliACORDEQADataMakerRec.cxx:149
 AliACORDEQADataMakerRec.cxx:150
 AliACORDEQADataMakerRec.cxx:151
 AliACORDEQADataMakerRec.cxx:152
 AliACORDEQADataMakerRec.cxx:153
 AliACORDEQADataMakerRec.cxx:154
 AliACORDEQADataMakerRec.cxx:155
 AliACORDEQADataMakerRec.cxx:156
 AliACORDEQADataMakerRec.cxx:157
 AliACORDEQADataMakerRec.cxx:158
 AliACORDEQADataMakerRec.cxx:159
 AliACORDEQADataMakerRec.cxx:160
 AliACORDEQADataMakerRec.cxx:161
 AliACORDEQADataMakerRec.cxx:162
 AliACORDEQADataMakerRec.cxx:163
 AliACORDEQADataMakerRec.cxx:164
 AliACORDEQADataMakerRec.cxx:165
 AliACORDEQADataMakerRec.cxx:166
 AliACORDEQADataMakerRec.cxx:167
 AliACORDEQADataMakerRec.cxx:168
 AliACORDEQADataMakerRec.cxx:169
 AliACORDEQADataMakerRec.cxx:170
 AliACORDEQADataMakerRec.cxx:171
 AliACORDEQADataMakerRec.cxx:172
 AliACORDEQADataMakerRec.cxx:173
 AliACORDEQADataMakerRec.cxx:174
 AliACORDEQADataMakerRec.cxx:175
 AliACORDEQADataMakerRec.cxx:176
 AliACORDEQADataMakerRec.cxx:177
 AliACORDEQADataMakerRec.cxx:178
 AliACORDEQADataMakerRec.cxx:179
 AliACORDEQADataMakerRec.cxx:180
 AliACORDEQADataMakerRec.cxx:181
 AliACORDEQADataMakerRec.cxx:182
 AliACORDEQADataMakerRec.cxx:183
 AliACORDEQADataMakerRec.cxx:184
 AliACORDEQADataMakerRec.cxx:185
 AliACORDEQADataMakerRec.cxx:186
 AliACORDEQADataMakerRec.cxx:187
 AliACORDEQADataMakerRec.cxx:188
 AliACORDEQADataMakerRec.cxx:189
 AliACORDEQADataMakerRec.cxx:190
 AliACORDEQADataMakerRec.cxx:191
 AliACORDEQADataMakerRec.cxx:192
 AliACORDEQADataMakerRec.cxx:193
 AliACORDEQADataMakerRec.cxx:194
 AliACORDEQADataMakerRec.cxx:195
 AliACORDEQADataMakerRec.cxx:196
 AliACORDEQADataMakerRec.cxx:197
 AliACORDEQADataMakerRec.cxx:198
 AliACORDEQADataMakerRec.cxx:199
 AliACORDEQADataMakerRec.cxx:200
 AliACORDEQADataMakerRec.cxx:201
 AliACORDEQADataMakerRec.cxx:202
 AliACORDEQADataMakerRec.cxx:203
 AliACORDEQADataMakerRec.cxx:204
 AliACORDEQADataMakerRec.cxx:205
 AliACORDEQADataMakerRec.cxx:206
 AliACORDEQADataMakerRec.cxx:207
 AliACORDEQADataMakerRec.cxx:208
 AliACORDEQADataMakerRec.cxx:209
 AliACORDEQADataMakerRec.cxx:210
 AliACORDEQADataMakerRec.cxx:211
 AliACORDEQADataMakerRec.cxx:212
 AliACORDEQADataMakerRec.cxx:213
 AliACORDEQADataMakerRec.cxx:214
 AliACORDEQADataMakerRec.cxx:215
 AliACORDEQADataMakerRec.cxx:216
 AliACORDEQADataMakerRec.cxx:217
 AliACORDEQADataMakerRec.cxx:218
 AliACORDEQADataMakerRec.cxx:219
 AliACORDEQADataMakerRec.cxx:220
 AliACORDEQADataMakerRec.cxx:221
 AliACORDEQADataMakerRec.cxx:222
 AliACORDEQADataMakerRec.cxx:223
 AliACORDEQADataMakerRec.cxx:224
 AliACORDEQADataMakerRec.cxx:225
 AliACORDEQADataMakerRec.cxx:226
 AliACORDEQADataMakerRec.cxx:227
 AliACORDEQADataMakerRec.cxx:228
 AliACORDEQADataMakerRec.cxx:229
 AliACORDEQADataMakerRec.cxx:230
 AliACORDEQADataMakerRec.cxx:231
 AliACORDEQADataMakerRec.cxx:232
 AliACORDEQADataMakerRec.cxx:233
 AliACORDEQADataMakerRec.cxx:234
 AliACORDEQADataMakerRec.cxx:235
 AliACORDEQADataMakerRec.cxx:236
 AliACORDEQADataMakerRec.cxx:237
 AliACORDEQADataMakerRec.cxx:238
 AliACORDEQADataMakerRec.cxx:239
 AliACORDEQADataMakerRec.cxx:240
 AliACORDEQADataMakerRec.cxx:241
 AliACORDEQADataMakerRec.cxx:242
 AliACORDEQADataMakerRec.cxx:243
 AliACORDEQADataMakerRec.cxx:244
 AliACORDEQADataMakerRec.cxx:245
 AliACORDEQADataMakerRec.cxx:246
 AliACORDEQADataMakerRec.cxx:247
 AliACORDEQADataMakerRec.cxx:248
 AliACORDEQADataMakerRec.cxx:249
 AliACORDEQADataMakerRec.cxx:250
 AliACORDEQADataMakerRec.cxx:251
 AliACORDEQADataMakerRec.cxx:252
 AliACORDEQADataMakerRec.cxx:253
 AliACORDEQADataMakerRec.cxx:254
 AliACORDEQADataMakerRec.cxx:255
 AliACORDEQADataMakerRec.cxx:256
 AliACORDEQADataMakerRec.cxx:257
 AliACORDEQADataMakerRec.cxx:258
 AliACORDEQADataMakerRec.cxx:259
 AliACORDEQADataMakerRec.cxx:260
 AliACORDEQADataMakerRec.cxx:261
 AliACORDEQADataMakerRec.cxx:262
 AliACORDEQADataMakerRec.cxx:263
 AliACORDEQADataMakerRec.cxx:264
 AliACORDEQADataMakerRec.cxx:265
 AliACORDEQADataMakerRec.cxx:266
 AliACORDEQADataMakerRec.cxx:267
 AliACORDEQADataMakerRec.cxx:268
 AliACORDEQADataMakerRec.cxx:269
 AliACORDEQADataMakerRec.cxx:270
 AliACORDEQADataMakerRec.cxx:271
 AliACORDEQADataMakerRec.cxx:272
 AliACORDEQADataMakerRec.cxx:273
 AliACORDEQADataMakerRec.cxx:274
 AliACORDEQADataMakerRec.cxx:275
 AliACORDEQADataMakerRec.cxx:276
 AliACORDEQADataMakerRec.cxx:277
 AliACORDEQADataMakerRec.cxx:278
 AliACORDEQADataMakerRec.cxx:279
 AliACORDEQADataMakerRec.cxx:280
 AliACORDEQADataMakerRec.cxx:281
 AliACORDEQADataMakerRec.cxx:282
 AliACORDEQADataMakerRec.cxx:283
 AliACORDEQADataMakerRec.cxx:284
 AliACORDEQADataMakerRec.cxx:285
 AliACORDEQADataMakerRec.cxx:286
 AliACORDEQADataMakerRec.cxx:287
 AliACORDEQADataMakerRec.cxx:288
 AliACORDEQADataMakerRec.cxx:289
 AliACORDEQADataMakerRec.cxx:290
 AliACORDEQADataMakerRec.cxx:291
 AliACORDEQADataMakerRec.cxx:292
 AliACORDEQADataMakerRec.cxx:293
 AliACORDEQADataMakerRec.cxx:294
 AliACORDEQADataMakerRec.cxx:295
 AliACORDEQADataMakerRec.cxx:296
 AliACORDEQADataMakerRec.cxx:297
 AliACORDEQADataMakerRec.cxx:298
 AliACORDEQADataMakerRec.cxx:299
 AliACORDEQADataMakerRec.cxx:300
 AliACORDEQADataMakerRec.cxx:301
 AliACORDEQADataMakerRec.cxx:302
 AliACORDEQADataMakerRec.cxx:303
 AliACORDEQADataMakerRec.cxx:304
 AliACORDEQADataMakerRec.cxx:305
 AliACORDEQADataMakerRec.cxx:306
 AliACORDEQADataMakerRec.cxx:307
 AliACORDEQADataMakerRec.cxx:308
 AliACORDEQADataMakerRec.cxx:309
 AliACORDEQADataMakerRec.cxx:310
 AliACORDEQADataMakerRec.cxx:311
 AliACORDEQADataMakerRec.cxx:312
 AliACORDEQADataMakerRec.cxx:313
 AliACORDEQADataMakerRec.cxx:314
 AliACORDEQADataMakerRec.cxx:315
 AliACORDEQADataMakerRec.cxx:316
 AliACORDEQADataMakerRec.cxx:317
 AliACORDEQADataMakerRec.cxx:318
 AliACORDEQADataMakerRec.cxx:319
 AliACORDEQADataMakerRec.cxx:320
 AliACORDEQADataMakerRec.cxx:321
 AliACORDEQADataMakerRec.cxx:322
 AliACORDEQADataMakerRec.cxx:323
 AliACORDEQADataMakerRec.cxx:324
 AliACORDEQADataMakerRec.cxx:325
 AliACORDEQADataMakerRec.cxx:326
 AliACORDEQADataMakerRec.cxx:327
 AliACORDEQADataMakerRec.cxx:328
 AliACORDEQADataMakerRec.cxx:329
 AliACORDEQADataMakerRec.cxx:330
 AliACORDEQADataMakerRec.cxx:331
 AliACORDEQADataMakerRec.cxx:332
 AliACORDEQADataMakerRec.cxx:333
 AliACORDEQADataMakerRec.cxx:334
 AliACORDEQADataMakerRec.cxx:335
 AliACORDEQADataMakerRec.cxx:336
 AliACORDEQADataMakerRec.cxx:337
 AliACORDEQADataMakerRec.cxx:338
 AliACORDEQADataMakerRec.cxx:339
 AliACORDEQADataMakerRec.cxx:340
 AliACORDEQADataMakerRec.cxx:341
 AliACORDEQADataMakerRec.cxx:342
 AliACORDEQADataMakerRec.cxx:343
 AliACORDEQADataMakerRec.cxx:344
 AliACORDEQADataMakerRec.cxx:345
 AliACORDEQADataMakerRec.cxx:346
 AliACORDEQADataMakerRec.cxx:347
 AliACORDEQADataMakerRec.cxx:348
 AliACORDEQADataMakerRec.cxx:349
 AliACORDEQADataMakerRec.cxx:350
 AliACORDEQADataMakerRec.cxx:351
 AliACORDEQADataMakerRec.cxx:352
 AliACORDEQADataMakerRec.cxx:353
 AliACORDEQADataMakerRec.cxx:354
 AliACORDEQADataMakerRec.cxx:355
 AliACORDEQADataMakerRec.cxx:356
 AliACORDEQADataMakerRec.cxx:357
 AliACORDEQADataMakerRec.cxx:358
 AliACORDEQADataMakerRec.cxx:359
 AliACORDEQADataMakerRec.cxx:360
 AliACORDEQADataMakerRec.cxx:361
 AliACORDEQADataMakerRec.cxx:362
 AliACORDEQADataMakerRec.cxx:363
 AliACORDEQADataMakerRec.cxx:364
 AliACORDEQADataMakerRec.cxx:365
 AliACORDEQADataMakerRec.cxx:366
 AliACORDEQADataMakerRec.cxx:367
 AliACORDEQADataMakerRec.cxx:368
 AliACORDEQADataMakerRec.cxx:369
 AliACORDEQADataMakerRec.cxx:370
 AliACORDEQADataMakerRec.cxx:371
 AliACORDEQADataMakerRec.cxx:372
 AliACORDEQADataMakerRec.cxx:373
 AliACORDEQADataMakerRec.cxx:374
 AliACORDEQADataMakerRec.cxx:375
 AliACORDEQADataMakerRec.cxx:376
 AliACORDEQADataMakerRec.cxx:377
 AliACORDEQADataMakerRec.cxx:378
 AliACORDEQADataMakerRec.cxx:379
 AliACORDEQADataMakerRec.cxx:380
 AliACORDEQADataMakerRec.cxx:381
 AliACORDEQADataMakerRec.cxx:382
 AliACORDEQADataMakerRec.cxx:383
 AliACORDEQADataMakerRec.cxx:384
 AliACORDEQADataMakerRec.cxx:385
 AliACORDEQADataMakerRec.cxx:386
 AliACORDEQADataMakerRec.cxx:387
 AliACORDEQADataMakerRec.cxx:388
 AliACORDEQADataMakerRec.cxx:389
 AliACORDEQADataMakerRec.cxx:390
 AliACORDEQADataMakerRec.cxx:391
 AliACORDEQADataMakerRec.cxx:392
 AliACORDEQADataMakerRec.cxx:393
 AliACORDEQADataMakerRec.cxx:394
 AliACORDEQADataMakerRec.cxx:395
 AliACORDEQADataMakerRec.cxx:396
 AliACORDEQADataMakerRec.cxx:397
 AliACORDEQADataMakerRec.cxx:398
 AliACORDEQADataMakerRec.cxx:399
 AliACORDEQADataMakerRec.cxx:400
 AliACORDEQADataMakerRec.cxx:401
 AliACORDEQADataMakerRec.cxx:402
 AliACORDEQADataMakerRec.cxx:403
 AliACORDEQADataMakerRec.cxx:404
 AliACORDEQADataMakerRec.cxx:405
 AliACORDEQADataMakerRec.cxx:406
 AliACORDEQADataMakerRec.cxx:407
 AliACORDEQADataMakerRec.cxx:408
 AliACORDEQADataMakerRec.cxx:409
 AliACORDEQADataMakerRec.cxx:410
 AliACORDEQADataMakerRec.cxx:411
 AliACORDEQADataMakerRec.cxx:412
 AliACORDEQADataMakerRec.cxx:413
 AliACORDEQADataMakerRec.cxx:414
 AliACORDEQADataMakerRec.cxx:415
 AliACORDEQADataMakerRec.cxx:416
 AliACORDEQADataMakerRec.cxx:417
 AliACORDEQADataMakerRec.cxx:418
 AliACORDEQADataMakerRec.cxx:419
 AliACORDEQADataMakerRec.cxx:420
 AliACORDEQADataMakerRec.cxx:421
 AliACORDEQADataMakerRec.cxx:422
 AliACORDEQADataMakerRec.cxx:423
 AliACORDEQADataMakerRec.cxx:424
 AliACORDEQADataMakerRec.cxx:425
 AliACORDEQADataMakerRec.cxx:426
 AliACORDEQADataMakerRec.cxx:427
 AliACORDEQADataMakerRec.cxx:428
 AliACORDEQADataMakerRec.cxx:429
 AliACORDEQADataMakerRec.cxx:430
 AliACORDEQADataMakerRec.cxx:431
 AliACORDEQADataMakerRec.cxx:432
 AliACORDEQADataMakerRec.cxx:433
 AliACORDEQADataMakerRec.cxx:434
 AliACORDEQADataMakerRec.cxx:435
 AliACORDEQADataMakerRec.cxx:436
 AliACORDEQADataMakerRec.cxx:437
 AliACORDEQADataMakerRec.cxx:438
 AliACORDEQADataMakerRec.cxx:439
 AliACORDEQADataMakerRec.cxx:440
 AliACORDEQADataMakerRec.cxx:441
 AliACORDEQADataMakerRec.cxx:442
 AliACORDEQADataMakerRec.cxx:443
 AliACORDEQADataMakerRec.cxx:444
 AliACORDEQADataMakerRec.cxx:445
 AliACORDEQADataMakerRec.cxx:446
 AliACORDEQADataMakerRec.cxx:447
 AliACORDEQADataMakerRec.cxx:448
 AliACORDEQADataMakerRec.cxx:449
 AliACORDEQADataMakerRec.cxx:450
 AliACORDEQADataMakerRec.cxx:451
 AliACORDEQADataMakerRec.cxx:452
 AliACORDEQADataMakerRec.cxx:453
 AliACORDEQADataMakerRec.cxx:454
 AliACORDEQADataMakerRec.cxx:455
 AliACORDEQADataMakerRec.cxx:456