]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/AliAnalysisTaskScale.cxx
Switch axes during filling the event counter
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliAnalysisTaskScale.cxx
index cea9bd7325eec7e224cf19990b7cb86d2d466515..cfdcba04fd04709184def1e1c15306655e37714c 100644 (file)
@@ -15,7 +15,8 @@
 #include "AliEMCALGeometry.h"
 #include "AliLog.h"
 #include "AliVCluster.h"
-#include "AliVTrack.h"
+#include "AliVParticle.h"
+#include "AliParticleContainer.h"
 
 ClassImp(AliAnalysisTaskScale)
 
@@ -23,20 +24,34 @@ 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)
+  fHistClusterEtaPhi(0),
+  fHistScalevsScale2Emcal(0),      
+  fHistScalevsScaleEmcal(0),       
+  fHistScaleEmcalvsScale2Emcal(0)
 {
   // Default constructor.
 
@@ -47,20 +62,34 @@ AliAnalysisTaskScale::AliAnalysisTaskScale() :
 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)
+  fHistClusterEtaPhi(0),
+  fHistScalevsScale2Emcal(0),      
+  fHistScalevsScaleEmcal(0),       
+  fHistScaleEmcalvsScale2Emcal(0)
 {
   // Constructor.
 
@@ -74,37 +103,162 @@ void AliAnalysisTaskScale::UserCreateOutputObjects()
 
   AliAnalysisTaskEmcal::UserCreateOutputObjects();
 
-  fHistPtTPCvsCent        = new TH2F("PtTPCvsCent","rho vs cent",            101, -1, 100, 500,   0, 1000);
-  fHistPtEMCALvsCent      = new TH2F("PtEMCALvsCent","rho vs cent",          101, -1, 100, 500,   0, 1000);
-  fHistEtvsCent           = new TH2F("EtvsCent","rho vs cent",               101, -1, 100, 500,   0, 1000);
-  fHistScalevsCent        = new TH2F("ScalevsCent","rho vs cent",            101, -1, 100, 400,   0, 4);
-  fHistDeltaScalevsCent   = new TH2F("DeltaScalevsCent","rho vs cent",       101, -1, 100, 400,  -2, 2);
-  fHistPtTPCvsNtrack      = new TH2F("PtTPCvsNtrack","rho vs cent",          500,  0, 2500, 500,  0, 1000);
-  fHistPtEMCALvsNtrack    = new TH2F("PtEMCALvsNtrack","rho vs cent",        500,  0, 2500, 500,  0, 1000);
-  fHistEtvsNtrack         = new TH2F("EtvsNtrack","rho vs cent",             500,  0, 2500, 500,  0, 1000);
-  fHistScalevsNtrack      = new TH2F("ScalevsNtrack","rho vs cent",          500,  0, 2500, 400,  0, 4);
-  fHistDeltaScalevsNtrack = new TH2F("DeltaScalevsNtrack","rho vs cent",     500,  0, 2500, 400, -2, 2);
-  fHistTrackPtvsCent      = new TH2F("TrackPtvsCent","Track pt vs cent",     101, -1, 100,  500,  0, 100);
-  fHistClusterPtvsCent    = new TH2F("ClusterPtvsCent","Cluster pt vs cent", 101, -1, 100,  500,  0, 100);
-  fHistTrackEtaPhi        = new TH2F("TrackEtaPhi","Track eta phi",          100, -1.0, 1.0, 101, 0, 2.02*TMath::Pi());
-  fHistClusterEtaPhi      = new TH2F("ClusterEtaPhi","Cluster eta phi",      100, -1.0, 1.0, 101, 0, 2.02*TMath::Pi());
-
-  fOutput->Add(fHistCentrality);
+  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);
 }
 
@@ -124,23 +278,17 @@ Bool_t AliAnalysisTaskScale::FillHistograms()
 {
   // Execute on each event.
 
-  const Double_t EmcalMinEta = fGeom->GetArm1EtaMin();
-  const Double_t EmcalMaxEta = fGeom->GetArm1EtaMax();
   const Double_t EmcalMinPhi = fGeom->GetArm1PhiMin() * TMath::DegToRad();
   const Double_t EmcalMaxPhi = fGeom->GetArm1PhiMax() * TMath::DegToRad();
-
-  const Double_t TpcMinPhi   = 0;
-  const Double_t TpcMaxPhi   = 2 * TMath::Pi();
-
-  const Double_t TpcArea     = (TpcMaxPhi - TpcMinPhi) * (EmcalMinEta - EmcalMaxEta);
-  const Double_t EmcalArea   = (EmcalMaxPhi - EmcalMinPhi) * (EmcalMinEta - EmcalMaxEta);
+  const Double_t EmcalWidth = (EmcalMaxPhi-EmcalMinPhi)/2.0;
 
   Double_t ptTPC   = 0;
   Double_t ptEMCAL = 0;
+  Double_t ptEMCAL2 = 0;
 
   const Int_t Ntracks = fTracks->GetEntries();
   for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) {
-    AliVTrack *track = static_cast<AliVTrack*>(fTracks->At(iTracks));
+    AliVParticle *track = static_cast<AliVParticle*>(fTracks->At(iTracks));
 
     if (!track)
       continue;
@@ -153,11 +301,10 @@ Bool_t AliAnalysisTaskScale::FillHistograms()
 
     fHistTrackPtvsCent->Fill(fCent,track->Pt());
     fHistTrackEtaPhi->Fill(track->Eta(),track->Phi());
-
     ptTPC += track->Pt();
-    if ((track->Phi() > EmcalMaxPhi) || (track->Phi() < EmcalMinPhi))
-      continue;
-
+    if ((track->Phi() > (EmcalMaxPhi+EmcalWidth)) || (track->Phi() < (EmcalMinPhi-EmcalWidth))) continue;
+    ptEMCAL2 += track->Pt();
+    if ((track->Phi() > EmcalMaxPhi) || (track->Phi() < EmcalMinPhi)) continue;
     ptEMCAL += track->Pt();
   }
 
@@ -182,20 +329,72 @@ Bool_t AliAnalysisTaskScale::FillHistograms()
 
     Et += nPart.Pt();
   }
-
-  const Double_t scalecalc = ((Et + ptEMCAL) / EmcalArea) * (TpcArea / ptTPC);
-  const Double_t scale     = GetScaleFactor(fCent);
-
+  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();
+  const Double_t EmcalMinPhi = fGeom->GetArm1PhiMin() * TMath::DegToRad();
+  const Double_t EmcalMaxPhi = fGeom->GetArm1PhiMax() * TMath::DegToRad();
+
+  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);
+}