ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2008, 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.                  *
 **************************************************************************/

/* $Id$ */

//*************************************************************************
// Class AliNormalizationCounter
// Class to store the informations relevant for the normalization in the 
// barrel for each run
// Authors: G. Ortona, ortona@to.infn.it
// D. Caffarri, davide.caffarri@pd.to.infn.it
// with many thanks to P. Pillot
/////////////////////////////////////////////////////////////

#include "AliLog.h"
#include "AliNormalizationCounter.h"
#include <AliESDEvent.h>
#include <AliESDtrack.h>
#include <AliAODEvent.h>
#include <AliAODVZERO.h>
#include <AliVParticle.h>
#include <AliTriggerAnalysis.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TList.h>
#include <TString.h>
#include <TCanvas.h>
#include <AliPhysicsSelection.h>
#include <AliMultiplicity.h>

ClassImp(AliNormalizationCounter)

//____________________________________________
AliNormalizationCounter::AliNormalizationCounter(): 
TNamed(),
fCounters(),
fESD(kFALSE),
fMultiplicity(kFALSE),
fMultiplicityEtaRange(1.0),
fHistTrackFilterEvMult(0),
fHistTrackAnaEvMult(0),
fHistTrackFilterSpdMult(0),
fHistTrackAnaSpdMult(0)
{
  // empty constructor
}

//__________________________________________________				
AliNormalizationCounter::AliNormalizationCounter(const char *name): 
TNamed(name,name),
fCounters(name),
fESD(kFALSE),
fMultiplicity(kFALSE),
fMultiplicityEtaRange(1.0),
fHistTrackFilterEvMult(0),
fHistTrackAnaEvMult(0),
fHistTrackFilterSpdMult(0),
fHistTrackAnaSpdMult(0)
{
  ;
}

//______________________________________________
AliNormalizationCounter::~AliNormalizationCounter()
{
  //destructor
  if(fHistTrackFilterEvMult){
    delete fHistTrackFilterEvMult;
    fHistTrackFilterEvMult =0;
  }
  if(fHistTrackAnaEvMult){
    delete fHistTrackAnaEvMult;
    fHistTrackAnaEvMult=0;
  }
  if(fHistTrackFilterSpdMult){
    delete fHistTrackFilterSpdMult;
    fHistTrackFilterSpdMult=0;
  }
  if(fHistTrackAnaSpdMult){
    delete fHistTrackAnaSpdMult;
    fHistTrackAnaSpdMult=0;
  }
}

//______________________________________________
void AliNormalizationCounter::Init()
{
  //variables initialization
  fCounters.AddRubric("Event","triggered/V0AND/PileUp/PbPbC0SMH-B-NOPF-ALLNOTRD/Candles0.3/PrimaryV/countForNorm/noPrimaryV/zvtxGT10/!V0A&Candle03/!V0A&PrimaryV/Candid(Filter)/Candid(Analysis)/NCandid(Filter)/NCandid(Analysis)");
  if(fMultiplicity)  fCounters.AddRubric("Multiplicity", 5000);
  fCounters.AddRubric("Run", 1000000);
  fCounters.Init();
  fHistTrackFilterEvMult=new TH2F("FiltCandidvsTracksinEv","FiltCandidvsTracksinEv",10000,-0.5,9999.5,200,-0.5,199.5);
  fHistTrackFilterEvMult->GetYaxis()->SetTitle("NCandidates");
  fHistTrackFilterEvMult->GetXaxis()->SetTitle("NTracksinEvent");
  fHistTrackAnaEvMult=new TH2F("AnaCandidvsTracksinEv","AnaCandidvsTracksinEv",10000,-0.5,9999.5,100,-0.5,99.5);
  fHistTrackAnaEvMult->GetYaxis()->SetTitle("NCandidates");
  fHistTrackAnaEvMult->GetXaxis()->SetTitle("NTracksinEvent");
  fHistTrackFilterSpdMult=new TH2F("FilterCandidvsSpdMult","FilterCandidvsSpdMult",5000,-0.5,4999.5,200,-0.5,199.5);
  fHistTrackFilterSpdMult->GetYaxis()->SetTitle("NCandidates");
  fHistTrackFilterSpdMult->GetXaxis()->SetTitle("NSPDTracklets");
  fHistTrackAnaSpdMult=new TH2F("AnaCandidvsSpdMult","AnaCandidvsSpdMult",5000,-0.5,4999.5,100,-0.5,99.5);
  fHistTrackAnaSpdMult->GetYaxis()->SetTitle("NCandidates");
  fHistTrackAnaSpdMult->GetXaxis()->SetTitle("NSPDTracklets");
}

//______________________________________________
Long64_t AliNormalizationCounter::Merge(TCollection* list){
  if (!list) return 0;
  if (list->IsEmpty()) return 0;//(Long64_t)fCounters.Merge(list);

  TIter next(list);
  const TObject* obj = 0x0;
  while ((obj = next())) {
    
    // check that "obj" is an object of the class AliNormalizationCounter
    const AliNormalizationCounter* counter = dynamic_cast<const AliNormalizationCounter*>(obj);
    if (!counter) {
      AliError(Form("object named %s is not AliNormalizationCounter! Skipping it.", counter->GetName()));
      continue;
    }

    Add(counter);

  }
  
  return (Long64_t)1;//(Long64_t)fCounters->GetEntries();
}
//_______________________________________
void AliNormalizationCounter::Add(const AliNormalizationCounter *norm){
  fCounters.Add(&(norm->fCounters));
  fHistTrackFilterEvMult->Add(norm->fHistTrackFilterEvMult);
  fHistTrackAnaEvMult->Add(norm->fHistTrackAnaEvMult);
  fHistTrackFilterSpdMult->Add(norm->fHistTrackFilterSpdMult);
  fHistTrackAnaSpdMult->Add(norm->fHistTrackAnaSpdMult);
}
//_______________________________________
/*
Stores the variables used for normalization as function of run number
returns kTRUE if the event is to be counted for normalization
(pass event selection cuts OR has no primary vertex)
 */
void AliNormalizationCounter::StoreEvent(AliVEvent *event,AliRDHFCuts *rdCut,Bool_t mc, Int_t multiplicity){
  //

  Bool_t isEventSelected = rdCut->IsEventSelected(event);

  // events not passing physics selection. do nothing
  if(rdCut->IsEventRejectedDuePhysicsSelection()) return;

  Bool_t v0A=kFALSE; 
  Bool_t v0B=kFALSE;
  Bool_t flag03=kFALSE;
  Bool_t flagPV=kFALSE;

  //Run Number
  Int_t runNumber = event->GetRunNumber();
 
  // Evaluate the multiplicity
  if(multiplicity==-9999) Multiplicity(event);

  //Find CINT1B
  AliESDEvent *eventESD = (AliESDEvent*)event;
  if(!eventESD){AliError("ESD event not available");return;}
  if(mc&&event->GetEventType() != 0)return;
  //event must be either physics or MC
  if(!(event->GetEventType() == 7||event->GetEventType() == 0))return;
  
  if(fMultiplicity) 
    fCounters.Count(Form("Event:triggered/Run:%d/Multiplicity:%d",runNumber,multiplicity));
  else 
    fCounters.Count(Form("Event:triggered/Run:%d",runNumber));

  //Find V0AND
  AliTriggerAnalysis trAn; /// Trigger Analysis
  AliAODVZERO* aodV0 = (AliAODVZERO*)event->GetVZEROData();
  Bool_t isPP2012 = kFALSE;
  if(runNumber>=176326 && runNumber<=193766) isPP2012=kTRUE;
  if(aodV0 && !isPP2012){
    v0B = trAn.IsOfflineTriggerFired(eventESD , AliTriggerAnalysis::kV0C);
    v0A = trAn.IsOfflineTriggerFired(eventESD , AliTriggerAnalysis::kV0A);
  }
  if(v0A&&v0B){
    if(fMultiplicity) 
      fCounters.Count(Form("Event:V0AND/Run:%d/Multiplicity:%d",runNumber,multiplicity));
    else
      fCounters.Count(Form("Event:V0AND/Run:%d",runNumber));
  }
  
  //FindPrimary vertex  
  // AliVVertex *vtrc =  (AliVVertex*)event->GetPrimaryVertex();
  // if(vtrc && vtrc->GetNContributors()>0){
  //   fCounters.Count(Form("Event:PrimaryV/Run:%d",runNumber));
  //   flagPV=kTRUE;
  // }

  //trigger
  AliAODEvent *eventAOD = (AliAODEvent*)event;
  TString trigclass=eventAOD->GetFiredTriggerClasses();
  if(trigclass.Contains("C0SMH-B-NOPF-ALLNOTRD")||trigclass.Contains("C0SMH-B-NOPF-ALL")){
    if(fMultiplicity) 
      fCounters.Count(Form("Event:PbPbC0SMH-B-NOPF-ALLNOTRD/Run:%d/Multiplicity:%d",runNumber,multiplicity));
    else 
      fCounters.Count(Form("Event:PbPbC0SMH-B-NOPF-ALLNOTRD/Run:%d",runNumber));
  }

  //FindPrimary vertex  
  if(isEventSelected){
    if(fMultiplicity) 
      fCounters.Count(Form("Event:PrimaryV/Run:%d/Multiplicity:%d",runNumber,multiplicity));
    else
      fCounters.Count(Form("Event:PrimaryV/Run:%d",runNumber));
    flagPV=kTRUE;
  }else{
    if(rdCut->GetWhyRejection()==0){
      if(fMultiplicity) 
	fCounters.Count(Form("Event:noPrimaryV/Run:%d/Multiplicity:%d",runNumber,multiplicity));
      else
	fCounters.Count(Form("Event:noPrimaryV/Run:%d",runNumber));
    }
    //find good vtx outside range
    if(rdCut->GetWhyRejection()==6){
      if(fMultiplicity) {
	fCounters.Count(Form("Event:zvtxGT10/Run:%d/Multiplicity:%d",runNumber,multiplicity));
	fCounters.Count(Form("Event:PrimaryV/Run:%d/Multiplicity:%d",runNumber,multiplicity));
      } else {
	fCounters.Count(Form("Event:zvtxGT10/Run:%d",runNumber));
	fCounters.Count(Form("Event:PrimaryV/Run:%d",runNumber));
      }
      flagPV=kTRUE;
    }
    if(rdCut->GetWhyRejection()==1){
      if(fMultiplicity) 
	fCounters.Count(Form("Event:PileUp/Run:%d/Multiplicity:%d",runNumber,multiplicity));
      else
	fCounters.Count(Form("Event:PileUp/Run:%d",runNumber));
    }
  }
  //to be counted for normalization
  if(rdCut->CountEventForNormalization()){
    if(fMultiplicity) 
      fCounters.Count(Form("Event:countForNorm/Run:%d/Multiplicity:%d",runNumber,multiplicity));
    else 
      fCounters.Count(Form("Event:countForNorm/Run:%d",runNumber));
  }


  //Find Candle
  Int_t trkEntries = (Int_t)event->GetNumberOfTracks();
  for(Int_t i=0;i<trkEntries&&!flag03;i++){
    AliAODTrack *track=(AliAODTrack*)event->GetTrack(i);
    if((track->Pt()>0.3)&&(!flag03)){
      if(fMultiplicity) 
	fCounters.Count(Form("Event:Candles0.3/Run:%d/Multiplicity:%d",runNumber,multiplicity));
      else
	fCounters.Count(Form("Event:Candles0.3/Run:%d",runNumber));
      flag03=kTRUE;
      break;
    }
  }
  
  if(!(v0A&&v0B)&&(flag03)){ 
    if(fMultiplicity) 
      fCounters.Count(Form("Event:!V0A&Candle03/Run:%d/Multiplicity:%d",runNumber,multiplicity));
    else 
      fCounters.Count(Form("Event:!V0A&Candle03/Run:%d",runNumber));
  }
  if(!(v0A&&v0B)&&flagPV){
    if(fMultiplicity) 
      fCounters.Count(Form("Event:!V0A&PrimaryV/Run:%d/Multiplicity:%d",runNumber,multiplicity));
    else
      fCounters.Count(Form("Event:!V0A&PrimaryV/Run:%d",runNumber));
  }
  
  return;
}
//_____________________________________________________________________
void AliNormalizationCounter::StoreCandidates(AliVEvent *event,Int_t nCand,Bool_t flagFilter){
  
  Int_t ntracks=event->GetNumberOfTracks();
  if(flagFilter)fHistTrackFilterEvMult->Fill(ntracks,nCand);
  else fHistTrackAnaEvMult->Fill(ntracks,nCand);
  Int_t nSPD=0;
  if(fESD){
    AliESDEvent *ESDevent=(AliESDEvent*)event;
    const AliMultiplicity *alimult = ESDevent->GetMultiplicity();
    nSPD = alimult->GetNumberOfTracklets();

  }else{
    AliAODEvent *aodEvent =(AliAODEvent*)event;
    AliAODTracklets *trklets=aodEvent->GetTracklets();
    nSPD = trklets->GetNumberOfTracklets();
  }
  if(flagFilter)fHistTrackFilterSpdMult->Fill(nSPD,nCand);
  else fHistTrackAnaSpdMult->Fill(nSPD,nCand);
  
  Int_t runNumber = event->GetRunNumber();
  Int_t multiplicity = Multiplicity(event);
  if(nCand==0)return;
  if(flagFilter){
    if(fMultiplicity) 
      fCounters.Count(Form("Event:Candid(Filter)/Run:%d/Multiplicity:%d",runNumber,multiplicity));
    else 
      fCounters.Count(Form("Event:Candid(Filter)/Run:%d",runNumber));
    for(Int_t i=0;i<nCand;i++){ 
      if(fMultiplicity) 
	fCounters.Count(Form("Event:NCandid(Filter)/Run:%d/Multiplicity:%d",runNumber,multiplicity));
      else 
	fCounters.Count(Form("Event:NCandid(Filter)/Run:%d",runNumber));
    }
  }else{
    if(fMultiplicity) 
      fCounters.Count(Form("Event:Candid(Analysis)/Run:%d/Multiplicity:%d",runNumber,multiplicity));
    else
      fCounters.Count(Form("Event:Candid(Analysis)/Run:%d",runNumber));
    for(Int_t i=0;i<nCand;i++){ 
      if(fMultiplicity) 
	fCounters.Count(Form("Event:NCandid(Analysis)/Run:%d/Multiplicity:%d",runNumber,multiplicity));
      else
	fCounters.Count(Form("Event:NCandid(Analysis)/Run:%d",runNumber));
    }
  }
  return;
}
//_______________________________________________________________________
TH1D* AliNormalizationCounter::DrawAgainstRuns(TString candle,Bool_t drawHist){
  //
  fCounters.SortRubric("Run");
  TString selection;
  selection.Form("event:%s",candle.Data());
  TH1D* histoneD = fCounters.Get("run",selection.Data());

  histoneD->Sumw2();
  if(drawHist)histoneD->DrawClone();
  return histoneD;
}
//___________________________________________________________________________
TH1D* AliNormalizationCounter::DrawRatio(TString candle1,TString candle2){
  //
  fCounters.SortRubric("Run");
  TString name;

  name.Form("%s/%s",candle1.Data(),candle2.Data());
  TH1D* num=DrawAgainstRuns(candle1.Data(),kFALSE);
  TH1D* den=DrawAgainstRuns(candle2.Data(),kFALSE);

  den->SetTitle(candle2.Data());
  den->SetName(candle2.Data());
  num->Divide(num,den,1,1,"B");
  num->SetTitle(name.Data());
  num->SetName(name.Data());
  num->DrawClone();
  return num;
}
//___________________________________________________________________________
void AliNormalizationCounter::PrintRubrics(){
  fCounters.PrintKeyWords();
}
//___________________________________________________________________________
Double_t AliNormalizationCounter::GetSum(TString candle){
  TString selection="event:";
  selection.Append(candle);
  return fCounters.GetSum(selection.Data());
}
//___________________________________________________________________________
TH2F* AliNormalizationCounter::GetHist(Bool_t filtercuts,Bool_t spdtracklets,Bool_t drawHist){
  if(filtercuts){
    if(spdtracklets){
      if(drawHist)fHistTrackFilterSpdMult->DrawCopy("LEGO2Z 0");
      return fHistTrackFilterSpdMult;
    }else{
      if(drawHist)fHistTrackFilterEvMult->DrawCopy("LEGO2Z 0");
      return fHistTrackFilterEvMult;
    }
  }else{
    if(spdtracklets){
      if(drawHist)fHistTrackAnaSpdMult->DrawCopy("LEGO2Z 0");
      return fHistTrackAnaSpdMult;
    }else{
      if(drawHist)fHistTrackAnaEvMult->DrawCopy("LEGO2Z 0");
      return fHistTrackAnaEvMult;
    }
  }
}
//___________________________________________________________________________
Double_t AliNormalizationCounter::GetNEventsForNorm(){
  Double_t noVtxzGT10=GetSum("noPrimaryV")*GetSum("zvtxGT10")/GetSum("PrimaryV");
  return GetSum("countForNorm")-noVtxzGT10;
}
//___________________________________________________________________________
Double_t AliNormalizationCounter::GetNEventsForNorm(Int_t runnumber){
  TString listofruns = fCounters.GetKeyWords("RUN");
  if(!listofruns.Contains(Form("%d",runnumber))){
    printf("WARNING: %d is not a valid run number\n",runnumber);
    fCounters.Print("Run","",kTRUE);
    return 0.;
  }
  TString suffix;suffix.Form("/RUN:%d",runnumber);
  TString zvtx;zvtx.Form("zvtxGT10%s",suffix.Data());
  TString noPV;noPV.Form("noPrimaryV%s",suffix.Data());
  TString pV;pV.Form("PrimaryV%s",suffix.Data());
  TString tbc;tbc.Form("countForNorm%s",suffix.Data());
  Double_t noVtxzGT10=GetSum(noPV.Data())*GetSum(zvtx.Data())/GetSum(pV.Data());
  return GetSum(tbc.Data())-noVtxzGT10;
}

//___________________________________________________________________________
Double_t AliNormalizationCounter::GetNEventsForNorm(Int_t minmultiplicity, Int_t maxmultiplicity){

  if(!fMultiplicity) {
    AliInfo("Sorry, you didn't activate the multiplicity in the counter!");
    return 0.;
  }

  TString listofruns = fCounters.GetKeyWords("Multiplicity");

  Int_t nmultbins = maxmultiplicity - minmultiplicity;
  Double_t sumnoPV=0., sumZvtx=0., sumPv=0., sumEvtNorm=0.;
  for (Int_t ibin=0; ibin<=nmultbins; ibin++) {
    //    cout << " Looking at bin "<< ibin+minmultiplicity<<endl;
    if(!listofruns.Contains(Form("%d",ibin+minmultiplicity))){
      AliInfo(Form("WARNING: %d is not a valid multiplicity number. \n",ibin+minmultiplicity));
      continue;
    }
    TString suffix;suffix.Form("/Multiplicity:%d",ibin+minmultiplicity);
    TString zvtx;zvtx.Form("zvtxGT10%s",suffix.Data());
    TString noPV;noPV.Form("noPrimaryV%s",suffix.Data());
    TString pV;pV.Form("PrimaryV%s",suffix.Data());
    TString tbc;tbc.Form("countForNorm%s",suffix.Data());
    sumnoPV += GetSum(noPV.Data());
    sumZvtx += GetSum(zvtx.Data());
    sumPv += GetSum(pV.Data());
    sumEvtNorm += GetSum(tbc.Data());
  }
  Double_t noVtxzGT10 = sumPv>0. ? sumnoPV * sumZvtx / sumPv : 0.;
  return sumEvtNorm - noVtxzGT10;
}

//___________________________________________________________________________
TH1D* AliNormalizationCounter::DrawNEventsForNorm(Bool_t drawRatio){
  //usare algebra histos
  fCounters.SortRubric("Run");
  TString selection;

  selection.Form("event:noPrimaryV");
  TH1D* hnoPrimV = fCounters.Get("run",selection.Data());
  hnoPrimV->Sumw2();

  selection.Form("event:zvtxGT10");
  TH1D*  hzvtx= fCounters.Get("run",selection.Data());
  hzvtx->Sumw2();

  selection.Form("event:PrimaryV");
  TH1D* hPrimV = fCounters.Get("run",selection.Data());
  hPrimV->Sumw2();

  hzvtx->Multiply(hnoPrimV);
  hzvtx->Divide(hPrimV);

  selection.Form("event:countForNorm");
  TH1D* hCountForNorm = fCounters.Get("run",selection.Data());
  hCountForNorm->Sumw2();

  hCountForNorm->Add(hzvtx,-1.);

  if(drawRatio){
    selection.Form("event:triggered");
    TH1D* htriggered = fCounters.Get("run",selection.Data());
    htriggered->Sumw2();
    hCountForNorm->Divide(htriggered);
  }

  hCountForNorm->DrawClone();
  return hCountForNorm;
}

//___________________________________________________________________________
Int_t AliNormalizationCounter::Multiplicity(AliVEvent* event){

  Int_t multiplicity = 0;
  AliAODEvent *eventAOD = (AliAODEvent*)event;
  AliAODTracklets * aodTracklets = (AliAODTracklets*)eventAOD->GetTracklets();
  Int_t ntracklets = (Int_t)aodTracklets->GetNumberOfTracklets();
  for(Int_t i=0;i<ntracklets; i++){
    Double_t theta = aodTracklets->GetTheta(i);
    Double_t eta = -TMath::Log( TMath::Tan(theta/2.) ); // check the formula
    if(TMath::Abs(eta)<fMultiplicityEtaRange){ // set the proper cut on eta
      multiplicity++;
    }
  }

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