ROOT logo
// $Id$
//
// Scale task.
//
// Author: R.Reed, M.Connors

#include "AliAnalysisTaskScale.h"

#include <TClonesArray.h>
#include <TF1.h>
#include <TH2F.h>
#include <TLorentzVector.h>
#include <TMath.h>

#include "AliEMCALGeometry.h"
#include "AliLog.h"
#include "AliVCluster.h"
#include "AliVParticle.h"
#include "AliVTrack.h"
#include "AliParticleContainer.h"
#include "AliClusterContainer.h"

ClassImp(AliAnalysisTaskScale)

//________________________________________________________________________
AliAnalysisTaskScale::AliAnalysisTaskScale() : 
  AliAnalysisTaskEmcal("AliAnalysisTaskScale", kTRUE), 
  fScaleFunction(0),
  fEmcalArea(1),
  fTpcArea(1),
  fHistPtTPCvsCent(0), 
  fHistPtEMCALvsCent(0), 
  fHistEtvsCent(0),  
  fHistScalevsCent(0),  
  fHistDeltaScalevsCent(0), 
  fHistScaleEmcalvsCent(0),      
  fHistScale2EmcalvsCent(0),
  fHistDeltaScale2EmcalvsCent(0),     
  fHistChScalevsCent(0),          
  fHistChScale2EmcalvsCent(0),   
  fHistPtTPCvsNtrack(0), 
  fHistPtEMCALvsNtrack(0), 
  fHistEtvsNtrack(0),  
  fHistScalevsNtrack(0),  
  fHistDeltaScalevsNtrack(0),
  fHistScaleEmcalvsNtrack(0),      
  fHistScale2EmcalvsNtrack(0),     
  fHistChScalevsNtrack(0),          
  fHistChScale2EmcalvsNtrack(0),   
  fHistTrackPtvsCent(0), 
  fHistClusterPtvsCent(0),
  fHistTrackEtaPhi(0), 
  fHistClusterEtaPhi(0),
  fHistScalevsScale2Emcal(0),      
  fHistScalevsScaleEmcal(0),       
  fHistScaleEmcalvsScale2Emcal(0),
  fTracksCont(0),
  fCaloClustersCont(0)
{
  // Default constructor.

  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliAnalysisTaskScale::AliAnalysisTaskScale(const char *name) :
  AliAnalysisTaskEmcal(name, kTRUE), 
  fScaleFunction(0),
  fEmcalArea(1),
  fTpcArea(1),
  fHistPtTPCvsCent(0), 
  fHistPtEMCALvsCent(0), 
  fHistEtvsCent(0),  
  fHistScalevsCent(0),  
  fHistDeltaScalevsCent(0), 
  fHistScaleEmcalvsCent(0),      
  fHistScale2EmcalvsCent(0),
  fHistDeltaScale2EmcalvsCent(0),  
  fHistChScalevsCent(0),          
  fHistChScale2EmcalvsCent(0),   
  fHistPtTPCvsNtrack(0), 
  fHistPtEMCALvsNtrack(0), 
  fHistEtvsNtrack(0),  
  fHistScalevsNtrack(0),  
  fHistDeltaScalevsNtrack(0),
  fHistScaleEmcalvsNtrack(0),      
  fHistScale2EmcalvsNtrack(0),     
  fHistChScalevsNtrack(0),          
  fHistChScale2EmcalvsNtrack(0),   
  fHistTrackPtvsCent(0), 
  fHistClusterPtvsCent(0),
  fHistTrackEtaPhi(0), 
  fHistClusterEtaPhi(0),
  fHistScalevsScale2Emcal(0),      
  fHistScalevsScaleEmcal(0),       
  fHistScaleEmcalvsScale2Emcal(0),
  fTracksCont(0),
  fCaloClustersCont(0)
{
  // Constructor.

  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
void AliAnalysisTaskScale::UserCreateOutputObjects()
{
  // Create my user objects.

  AliAnalysisTaskEmcal::UserCreateOutputObjects();

  //Get track and particle container
  fTracksCont       = GetParticleContainer(0);
  fCaloClustersCont = GetClusterContainer(0);
  if(fTracksCont)       fTracksCont->SetClassName("AliVTrack");
  if(fCaloClustersCont) fCaloClustersCont->SetClassName("AliVCluster");

  //Create histos
  fHistPtTPCvsCent = new TH2F("fHistPtTPCvsCent", "fHistPtTPCvsCent", 101, -1, 100, 750, 0, 1500);
  fHistPtTPCvsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistPtTPCvsCent->GetYaxis()->SetTitle("#sum p_{T,track}^{TPC} GeV/c");
  fHistPtTPCvsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistPtTPCvsCent);

  fHistPtEMCALvsCent = new TH2F("fHistPtEMCALvsCent", "fHistPtEMCALvsCent", 101, -1, 100, 250, 0, 500);
  fHistPtEMCALvsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistPtEMCALvsCent->GetYaxis()->SetTitle("#sum p_{T,track}^{EMCal} GeV/c");
  fHistPtEMCALvsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistPtEMCALvsCent);

  fHistEtvsCent = new TH2F("fHistEtvsCent", "fHistEtvsCent", 101, -1, 100, 250, 0, 500);
  fHistEtvsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistEtvsCent->GetYaxis()->SetTitle("#sum E_{T,cluster} GeV");
  fHistEtvsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistEtvsCent);

  fHistScalevsCent = new TH2F("fHistScalevsCent", "fHistScalevsCent", 101, -1, 100, 500, 0, 5);
  fHistScalevsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistScalevsCent->GetYaxis()->SetTitle("s_{TPC} = (#sum E_{T,cluster} + #sum p_{T,track}^{TPC}) / #sum p_{T,track}^{TPC}");
  fHistScalevsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistScalevsCent);

  fHistDeltaScalevsCent = new TH2F("fHistDeltaScalevsCent", "fHistDeltaScalevsCent", 101, -1, 100, 500, -2.5, 2.5);
  fHistDeltaScalevsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistDeltaScalevsCent->GetYaxis()->SetTitle("s_{TPC}-s^{old}");
  fHistDeltaScalevsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistDeltaScalevsCent);

  fHistScaleEmcalvsCent= new TH2F("fHistScaleEmcalvsCent", "fHistScaleEmcalvsCent", 101, -1, 100, 500, 0, 5);
  fHistScaleEmcalvsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistScaleEmcalvsCent->GetYaxis()->SetTitle("s_{EMC}");
  fHistScaleEmcalvsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistScaleEmcalvsCent);

  fHistScale2EmcalvsCent = new TH2F("fHistScale2EmcalvsCent", "fHistScale2EmcalvsCent", 101, -1, 100, 500, 0, 5);
  fHistScale2EmcalvsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistScale2EmcalvsCent->GetYaxis()->SetTitle("s_{2 #times EMC}");
  fHistScale2EmcalvsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistScale2EmcalvsCent);

  fHistDeltaScale2EmcalvsCent = new TH2F("fHistDeltaScale2EmcalvsCent", "fHistDeltaScale2EmcalvsCent", 101, -1, 100, 500, -2.5, 2.5);
  fHistDeltaScale2EmcalvsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistDeltaScale2EmcalvsCent->GetYaxis()->SetTitle("s_{2 #times EMC}-s^{old}");
  fHistDeltaScale2EmcalvsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistDeltaScale2EmcalvsCent);

  fHistChScalevsCent = new TH2F("fHistChScalevsCent", "fHistChScalevsCent", 101, -1, 100, 500, 0, 5);
  fHistChScalevsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistChScalevsCent->GetYaxis()->SetTitle("s_{TPC}^{ch}");
  fHistChScalevsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistChScalevsCent);

  fHistChScale2EmcalvsCent = new TH2F("fHistChScale2EmcalvsCent", "fHistChScale2EmcalvsCent", 101, -1, 100, 500, 0, 5);
  fHistChScale2EmcalvsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistChScale2EmcalvsCent->GetYaxis()->SetTitle("s_{2 #times EMC}^{ch}");
  fHistChScale2EmcalvsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistChScale2EmcalvsCent);

  fHistPtTPCvsNtrack = new TH2F("fHistPtTPCvsNtrack", "fHistPtTPCvsNtrack", 800, 0, 4000,  750, 0, 1500);
  fHistPtTPCvsNtrack->GetXaxis()->SetTitle("No. of tracks");
  fHistPtTPCvsNtrack->GetYaxis()->SetTitle("#sum p_{T,track}^{TPC}");
  fHistPtTPCvsNtrack->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistPtTPCvsNtrack);

  fHistPtEMCALvsNtrack = new TH2F("fHistPtEMCALvsNtrack", "fHistPtEMCALvsNtrack", 800, 0, 4000,  500, 0, 1000);
  fHistPtEMCALvsNtrack->GetXaxis()->SetTitle("No. of tracks");
  fHistPtEMCALvsNtrack->GetYaxis()->SetTitle("#sum p_{T,track}^{EMCal}");
  fHistPtEMCALvsNtrack->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistPtEMCALvsNtrack);

  fHistEtvsNtrack = new TH2F("fHistEtvsNtrack", "fHistEtvsNtrack", 800,  0, 4000, 500, 0, 1000);
  fHistEtvsNtrack->GetXaxis()->SetTitle("No. of tracks");
  fHistEtvsNtrack->GetYaxis()->SetTitle("#sum E_{T,cluster}");
  fHistEtvsNtrack->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistEtvsNtrack);

  fHistScalevsNtrack = new TH2F("fHistScalevsNtrack", "fHistScalevsNtrack", 800, 0, 4000,  500, 0, 5);
  fHistScalevsNtrack->GetXaxis()->SetTitle("No. of tracks");
  fHistScalevsNtrack->GetYaxis()->SetTitle("s_{TPC}");
  fHistScalevsNtrack->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistScalevsNtrack);

  fHistDeltaScalevsNtrack = new TH2F("fHistDeltaScalevsNtrack", "fHistDeltaScalevsNtrack", 800, 0, 4000, 500, -2.5, 2.5);
  fHistDeltaScalevsNtrack->GetXaxis()->SetTitle("No. of tracks");
  fHistDeltaScalevsNtrack->GetYaxis()->SetTitle("s_{TPC}-s^{old}");
  fHistDeltaScalevsNtrack->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistDeltaScalevsNtrack);

  fHistScaleEmcalvsNtrack = new TH2F("fHistScaleEmcalvsNtrack", "fHistScaleEmcalvsNtrack", 800, 0, 4000, 500, 0, 5);
  fHistScaleEmcalvsNtrack->GetXaxis()->SetTitle("No. of tracks");
  fHistScaleEmcalvsNtrack->GetYaxis()->SetTitle("s_{EMC}");
  fHistScaleEmcalvsNtrack->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistScaleEmcalvsNtrack);

  fHistScale2EmcalvsNtrack = new TH2F("fHistScale2EmcalvsNtrack","fHistScale2EmcalvsNtrack", 800, 0, 4000, 500, 0, 5);
  fHistScale2EmcalvsNtrack->GetXaxis()->SetTitle("No. of tracks");
  fHistScale2EmcalvsNtrack->GetYaxis()->SetTitle("s_{2 #times EMC}");
  fHistScale2EmcalvsNtrack->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistScale2EmcalvsNtrack);

  fHistChScalevsNtrack = new TH2F("fHistChScalevsNtrack", "fHistChScalevsNtrack", 800, 0, 4000, 500, 0, 5);
  fHistChScalevsNtrack->GetXaxis()->SetTitle("No. of tracks");
  fHistChScalevsNtrack->GetYaxis()->SetTitle("s_{TPC}^{ch}");
  fHistChScalevsNtrack->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistChScalevsNtrack);

  fHistChScale2EmcalvsNtrack = new TH2F("fHistChScale2EmcalvsNtrack", "fHistChScale2EmcalvsNtrack", 800,  0, 4000, 500, 0, 5);
  fHistChScale2EmcalvsNtrack->GetXaxis()->SetTitle("No. of tracks");
  fHistChScale2EmcalvsNtrack->GetYaxis()->SetTitle("s_{2 #times EMC}^{ch}");
  fHistChScale2EmcalvsNtrack->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistChScale2EmcalvsNtrack);

  fHistTrackPtvsCent = new TH2F("fHistTrackPtvsCent", "fHistTrackPtvsCent", 101, -1, 100, 500, 0, 100);
  fHistTrackPtvsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistTrackPtvsCent->GetYaxis()->SetTitle("p_{T,track} GeV/c");
  fHistTrackPtvsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistTrackPtvsCent);

  fHistClusterPtvsCent = new TH2F("fHistClusterPtvsCent", "fHistClusterPtvsCent", 101, -1, 100, 500, 0, 100);
  fHistClusterPtvsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistClusterPtvsCent->GetYaxis()->SetTitle("E_{T,cluster} GeV");
  fHistClusterPtvsCent->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistClusterPtvsCent);

  fHistTrackEtaPhi = new TH2F("fHistTrackEtaPhi", "fHistTrackEtaPhi", 100, -1.0, 1.0, 101, 0, 2.02*TMath::Pi());
  fHistTrackEtaPhi->GetXaxis()->SetTitle("#eta");
  fHistTrackEtaPhi->GetYaxis()->SetTitle("#phi");
  fHistTrackEtaPhi->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistTrackEtaPhi);

  fHistClusterEtaPhi = new TH2F("fHistClusterEtaPhi", "fHistClusterEtaPhi", 100, -1.0, 1.0, 101, 0, 2.02*TMath::Pi());
  fHistClusterEtaPhi->GetXaxis()->SetTitle("#eta");
  fHistClusterEtaPhi->GetYaxis()->SetTitle("#phi");
  fHistClusterEtaPhi->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistClusterEtaPhi);

  fHistScalevsScale2Emcal = new TH2F("fHistScalevsScale2Emcal", "fHistScalevsScale2Emcal",500, 0, 5, 500, 0, 5);
  fHistScalevsScale2Emcal->GetXaxis()->SetTitle("s_{TPC}");
  fHistScalevsScale2Emcal->GetYaxis()->SetTitle("s_{2 #times EMC}");
  fHistScalevsScale2Emcal->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistScalevsScale2Emcal);

  fHistScalevsScaleEmcal = new TH2F("fHistScalevsScaleEmcal", "fHistScalevsScaleEmcal", 500, 0, 5, 500, 0, 5);
  fHistScalevsScaleEmcal->GetXaxis()->SetTitle("s_{TPC}");
  fHistScalevsScaleEmcal->GetYaxis()->SetTitle("s_{EMC}");
  fHistScalevsScaleEmcal->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistScalevsScaleEmcal);

  fHistScaleEmcalvsScale2Emcal = new TH2F("fHistScaleEmcalvsScale2Emcal", "fHistScaleEmcalvsScale2Emcal", 500, 0, 5, 500, 0, 5);
  fHistScaleEmcalvsScale2Emcal->GetXaxis()->SetTitle("s_{EMC}");
  fHistScaleEmcalvsScale2Emcal->GetYaxis()->SetTitle("s_{2 #times EMC}");
  fHistScaleEmcalvsScale2Emcal->GetZaxis()->SetTitle("counts");
  fOutput->Add(fHistScaleEmcalvsScale2Emcal);

  PostData(1, fOutput);
}

//________________________________________________________________________
Double_t AliAnalysisTaskScale::GetScaleFactor(Double_t cent)
{
  // Get scale function.

  Double_t scale = -1;
  if (fScaleFunction)
    scale = fScaleFunction->Eval(cent);
  return scale;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskScale::FillHistograms() 
{
  // Execute on each event.

  Double_t EmcalMinPhi = fGeom->GetArm1PhiMin() * TMath::DegToRad();
  Double_t EmcalMaxPhi = fGeom->GetArm1PhiMax() * TMath::DegToRad();
  if(InputEvent()->GetRunNumber()>=177295 && InputEvent()->GetRunNumber()<=197470) { //small SM masked in 2012 and 2013
    EmcalMinPhi = 1.405;
    EmcalMaxPhi = 3.135;
  }
  const Double_t EmcalWidth = (EmcalMaxPhi-EmcalMinPhi)/2.0;

  Double_t ptTPC   = 0;
  Double_t ptEMCAL = 0;
  Double_t ptEMCAL2 = 0;

  const Int_t Ntracks = fTracksCont->GetNAcceptedParticles();
  if (fTracksCont) {
    fTracksCont->ResetCurrentID();
    AliVTrack *track = NULL;
    while((track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle()))) {
      fHistTrackPtvsCent->Fill(fCent,track->Pt());
      fHistTrackEtaPhi->Fill(track->Eta(),track->Phi());
      ptTPC += track->Pt();
      if ((track->Phi() > (EmcalMaxPhi+EmcalWidth)) || (track->Phi() < (EmcalMinPhi-EmcalWidth))) continue;
      ptEMCAL2 += track->Pt();
      if ((track->Phi() > EmcalMaxPhi) || (track->Phi() < EmcalMinPhi)) continue;
      ptEMCAL += track->Pt();
    }
  }

  if (ptTPC == 0) 
    return kFALSE;

  Double_t Et = 0;  
  if (fCaloClustersCont) {
    fCaloClustersCont->ResetCurrentID();
    AliVCluster *c = NULL;
    while((c = fCaloClustersCont->GetNextAcceptCluster())) {
      TLorentzVector nPart;
      c->GetMomentum(nPart, fVertex);

      fHistClusterPtvsCent->Fill(fCent, nPart.Pt());
      fHistClusterEtaPhi->Fill(nPart.Eta(), nPart.Phi());

      Et += nPart.Pt();
    }
  }
 
  Double_t scalecalc         = -1;
  if (ptEMCAL > 0 && Et > 0 && ptTPC > 0)
    scalecalc         =  ((Et + ptEMCAL) / fEmcalArea) * (fTpcArea / ptTPC);
  const Double_t scale             = GetScaleFactor(fCent);
  Double_t scalecalcemcal          = -1;
  if (ptEMCAL > 0)
    scalecalcemcal                 = (Et+ptEMCAL)/ptEMCAL;
  Double_t scalecalcemcal2         = -1;
  Double_t Chscalecalcemcal2       = -1;
  if (ptEMCAL2 > 0){
    scalecalcemcal2                = 2*(Et+ptEMCAL)/ptEMCAL2;
    Chscalecalcemcal2              = 2*ptEMCAL/ptEMCAL2;}
  const Double_t Chscalecalcemcal  = ((ptEMCAL) / fEmcalArea) * (fTpcArea / ptTPC);

  fHistScaleEmcalvsCent->Fill(fCent,scalecalcemcal);      
  fHistScale2EmcalvsCent->Fill(fCent,scalecalcemcal2);     
  fHistChScalevsCent->Fill(fCent,Chscalecalcemcal);    
  fHistChScale2EmcalvsCent->Fill(fCent,Chscalecalcemcal2);   
  fHistScaleEmcalvsNtrack->Fill(Ntracks,scalecalcemcal);      
  fHistScale2EmcalvsNtrack->Fill(Ntracks,scalecalcemcal2);     
  fHistChScalevsNtrack->Fill(Ntracks,Chscalecalcemcal);    
  fHistChScale2EmcalvsNtrack->Fill(Ntracks,Chscalecalcemcal2);   
  fHistPtTPCvsCent->Fill(fCent, ptTPC);
  fHistPtEMCALvsCent->Fill(fCent, ptEMCAL);
  fHistEtvsCent->Fill(fCent, Et);
  fHistScalevsCent->Fill(fCent, scalecalc);
  fHistDeltaScalevsCent->Fill(fCent, scalecalc - scale);
  fHistDeltaScale2EmcalvsCent->Fill(fCent, scalecalcemcal2 - scale);
  fHistPtTPCvsNtrack->Fill(Ntracks, ptTPC);
  fHistPtEMCALvsNtrack->Fill(Ntracks, ptEMCAL);
  fHistEtvsNtrack->Fill(Ntracks, Et);
  fHistScalevsNtrack->Fill(Ntracks, scalecalc);
  fHistDeltaScalevsNtrack->Fill(Ntracks, scalecalc - scale);
  fHistScalevsScale2Emcal->Fill(scalecalc,scalecalcemcal2);      
  fHistScalevsScaleEmcal->Fill(scalecalc,scalecalcemcal); 
  fHistScaleEmcalvsScale2Emcal->Fill(scalecalcemcal,scalecalcemcal2);

  return kTRUE;
}


//________________________________________________________________________
void AliAnalysisTaskScale::ExecOnce() 
{
  AliAnalysisTaskEmcal::ExecOnce();

  const Double_t EmcalMinEta = fGeom->GetArm1EtaMin();
  const Double_t EmcalMaxEta = fGeom->GetArm1EtaMax();
  Double_t EmcalMinPhi = fGeom->GetArm1PhiMin() * TMath::DegToRad();
  Double_t EmcalMaxPhi = fGeom->GetArm1PhiMax() * TMath::DegToRad();
  if(InputEvent()->GetRunNumber()>=177295 && InputEvent()->GetRunNumber()<=197470) { //small SM masked in 2012 and 2013
    EmcalMinPhi = 1.405;
    EmcalMaxPhi = 3.135;
  }

  fEmcalArea  = (EmcalMaxPhi - EmcalMinPhi) * (EmcalMinEta - EmcalMaxEta);

  AliParticleContainer *partCont = GetParticleContainer(0);
  if (!partCont) {
    AliError(Form("%s: No particle container found! Assuming tpc area = 1...",GetName()));
    fTpcArea = 1;
    return;
  }

  Float_t TpcMaxPhi = partCont->GetParticlePhiMax();
  Float_t TpcMinPhi = partCont->GetParticlePhiMin();
  
  if (TpcMaxPhi > TMath::Pi()*2) TpcMaxPhi = TMath::Pi()*2;
  if (TpcMinPhi < 0) TpcMinPhi = 0;

  fTpcArea = (TpcMaxPhi - TpcMinPhi) * (EmcalMinEta - EmcalMaxEta);

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