From Salvatore
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 19 Sep 2012 20:41:36 +0000 (20:41 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 19 Sep 2012 20:41:36 +0000 (20:41 +0000)
- QA plots for exotic clusters
- Non-linearity correction for MC in EMCal tender macro
- Other minor fixes

PWG/EMCAL/macros/AddTaskEMCALTender.C
PWG/EMCAL/macros/ConfigEmcalTenderSupply.C
PWGJE/EMCALJetTasks/AliAnalysisTaskDeltaPt.cxx
PWGJE/EMCALJetTasks/AliAnalysisTaskDeltaPt.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAJF.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAJF.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.h
PWGJE/EMCALJetTasks/macros/AddTaskScale.C

index 5928b32..2fde856 100644 (file)
@@ -1,6 +1,6 @@
 // $Id$
 
-AliAnalysisTaskSE *AddTaskEMCALTender()
+AliAnalysisTaskSE *AddTaskEMCALTender(const char *p = "lhc11h")
 {
   // Get the pointer to the existing analysis manager via the static access method.
   //==============================================================================
@@ -19,10 +19,19 @@ AliAnalysisTaskSE *AddTaskEMCALTender()
   AliEMCALTenderSupply *EMCALSupply = 0;
   AliAnalysisDataContainer *coutput1 = 0;
 
+  UInt_t nonLinFunct = AliEMCALRecoUtils::kBeamTestCorrected;
+
+  TString period(p);
+  period.ToLower();
+  if (period == "lhc12a15e")
+    nonLinFunct = AliEMCALRecoUtils::kPi0MCv3;
+  else if (period == "lhc12a15a")
+    nonLinFunct = AliEMCALRecoUtils::kPi0MCv2;
+
   gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/ConfigEmcalTenderSupply.C");
 
   if (evhand->InheritsFrom("AliESDInputHandler")) {
-    EMCALSupply = ConfigEmcalTenderSupply(kTRUE);
+    EMCALSupply = ConfigEmcalTenderSupply(kTRUE, kTRUE, kTRUE, kTRUE, kTRUE, kTRUE, kFALSE, kTRUE, kTRUE, nonLinFunct);
 
     AliTender* alitender = new  AliTender("AliTender");
     alitender->AddSupply(EMCALSupply);
@@ -35,7 +44,7 @@ AliAnalysisTaskSE *AddTaskEMCALTender()
                                    "default_tender");
   }
   else if (evhand->InheritsFrom("AliAODInputHandler")) {
-    EMCALSupply = ConfigEmcalTenderSupply(kFALSE);
+    EMCALSupply = ConfigEmcalTenderSupply(kFALSE, kTRUE, kTRUE, kTRUE, kTRUE, kTRUE, kFALSE, kTRUE, kTRUE, nonLinFunct);
 
     AliEmcalTenderTask* emcaltender = new  AliEmcalTenderTask("AliEmcalTenderTask");
     emcaltender->SetEMCALTenderSupply(EMCALSupply);
index 657fc5b..db6a9dc 100644 (file)
@@ -9,7 +9,8 @@ AliEMCALTenderSupply* ConfigEmcalTenderSupply(
   Bool_t remExotic     = kTRUE,
   Bool_t fidRegion     = kFALSE,
   Bool_t calibEnergy   = kTRUE,
-  Bool_t calibTime     = kTRUE)
+  Bool_t calibTime     = kTRUE,
+  UInt_t nonLinFunct   = AliEMCALRecoUtils::kBeamTestCorrected)
 {
   AliEMCALTenderSupply *EMCALSupply = new AliEMCALTenderSupply("EMCALtender");  
   EMCALSupply->SetDebugLevel(2);
@@ -45,7 +46,7 @@ AliEMCALTenderSupply* ConfigEmcalTenderSupply(
     EMCALSupply->SwitchOffRecalculateClusPos();
   
   if (nonLinearCorr) {
-    EMCALSupply->SetNonLinearityFunction(AliEMCALTenderSupply::kBeamTestCorrected);
+    EMCALSupply->SetNonLinearityFunction(nonLinFunct);
     EMCALSupply->SwitchOnNonLinearityCorrection();
   }
   else {
index 0b60aca..8f9a6d3 100644 (file)
@@ -42,10 +42,8 @@ AliAnalysisTaskDeltaPt::AliAnalysisTaskDeltaPt() :
   fEmbeddedTrackId(-1),
   fHistRCPhiEta(0),
   fHistRCPtExLJVSDPhiLJ(0),
-  fHistRhoVSRCPt(0),
   fHistEmbJetPhiEta(0),
-  fHistEmbPartPhiEta(0),
-  fHistRhoVSEmbBkg(0)
+  fHistEmbPartPhiEta(0)
 {
   // Default constructor.
 
@@ -53,6 +51,7 @@ AliAnalysisTaskDeltaPt::AliAnalysisTaskDeltaPt() :
     fHistRCPt[i] = 0;
     fHistRCPtExLJ[i] = 0;
     fHistRCPtRand[i] = 0; 
+    fHistRhoVSRCPt[i] = 0;
     fHistDeltaPtRC[i] = 0;
     fHistDeltaPtRCExLJ[i] = 0;
     fHistDeltaPtRCRand[i] = 0;
@@ -62,6 +61,7 @@ AliAnalysisTaskDeltaPt::AliAnalysisTaskDeltaPt() :
     fHistEmbJetsArea[i] = 0;
     fHistEmbPartPt[i] = 0;
     fHistDistEmbPartJetAxis[i] = 0;
+    fHistRhoVSEmbBkg[i] = 0;
     fHistDeltaPtEmb[i] = 0;
   }
 
@@ -88,10 +88,8 @@ AliAnalysisTaskDeltaPt::AliAnalysisTaskDeltaPt(const char *name) :
   fEmbeddedTrackId(-1),
   fHistRCPhiEta(0),
   fHistRCPtExLJVSDPhiLJ(0),
-  fHistRhoVSRCPt(0),
   fHistEmbJetPhiEta(0),
-  fHistEmbPartPhiEta(0),
-  fHistRhoVSEmbBkg(0)
+  fHistEmbPartPhiEta(0)
 {
   // Standard constructor.
 
@@ -99,6 +97,7 @@ AliAnalysisTaskDeltaPt::AliAnalysisTaskDeltaPt(const char *name) :
     fHistRCPt[i] = 0;
     fHistRCPtExLJ[i] = 0;
     fHistRCPtRand[i] = 0; 
+    fHistRhoVSRCPt[i] = 0;
     fHistDeltaPtRC[i] = 0;
     fHistDeltaPtRCExLJ[i] = 0;
     fHistDeltaPtRCRand[i] = 0;
@@ -108,6 +107,7 @@ AliAnalysisTaskDeltaPt::AliAnalysisTaskDeltaPt(const char *name) :
     fHistEmbJetsArea[i] = 0;
     fHistEmbPartPt[i] = 0;
     fHistDistEmbPartJetAxis[i] = 0;
+    fHistRhoVSEmbBkg[i] = 0;
     fHistDeltaPtEmb[i] = 0;
   }
 
@@ -137,11 +137,6 @@ void AliAnalysisTaskDeltaPt::UserCreateOutputObjects()
   fHistRCPtExLJVSDPhiLJ->GetYaxis()->SetTitle("#Delta#phi");
   fOutput->Add(fHistRCPtExLJVSDPhiLJ);
 
-  fHistRhoVSRCPt = new TH2F("fHistRhoVSRCPt","fHistRhoVSRCPt", fNbins, fMinBinPt, fMaxBinPt, fNbins, fMinBinPt, fMaxBinPt);
-  fHistRhoVSRCPt->GetXaxis()->SetTitle("A#rho [GeV/c]");
-  fHistRhoVSRCPt->GetYaxis()->SetTitle("rigid cone p_{T} [GeV/c]");
-  fOutput->Add(fHistRhoVSRCPt);
-
   if (!fJetsName.IsNull()) {
     fHistEmbJetPhiEta = new TH2F("fHistEmbJetPhiEta","Phi-Eta distribution of embedded jets", 50, -1, 1, 101, 0, TMath::Pi() * 2.02);
     fHistEmbJetPhiEta->GetXaxis()->SetTitle("#eta");
@@ -152,11 +147,6 @@ void AliAnalysisTaskDeltaPt::UserCreateOutputObjects()
     fHistEmbPartPhiEta->GetXaxis()->SetTitle("#eta");
     fHistEmbPartPhiEta->GetYaxis()->SetTitle("#phi");
     fOutput->Add(fHistEmbPartPhiEta);
-    
-    fHistRhoVSEmbBkg = new TH2F("fHistRhoVSEmbBkg","fHistRhoVSEmbBkg", fNbins, fMinBinPt, fMaxBinPt, fNbins, fMinBinPt, fMaxBinPt);
-    fHistRhoVSEmbBkg->GetXaxis()->SetTitle("A#rho [GeV/c]");
-    fHistRhoVSEmbBkg->GetYaxis()->SetTitle("background of embedded track [GeV/c]");
-    fOutput->Add(fHistRhoVSEmbBkg);
   }
 
   TString histname;
@@ -183,6 +173,13 @@ void AliAnalysisTaskDeltaPt::UserCreateOutputObjects()
     fHistRCPtRand[i]->GetYaxis()->SetTitle("counts");
     fOutput->Add(fHistRCPtRand[i]);
 
+    histname = "fHistRhoVSRCPt_";
+    histname += i;
+    fHistRhoVSRCPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt*2, fNbins, fMinBinPt, fMaxBinPt);
+    fHistRhoVSRCPt[i]->GetXaxis()->SetTitle("A#rho [GeV/c]");
+    fHistRhoVSRCPt[i]->GetYaxis()->SetTitle("rigid cone p_{T} [GeV/c]");
+    fOutput->Add(fHistRhoVSRCPt[i]);
+
     histname = "fHistDeltaPtRC_";
     histname += i;
     fHistDeltaPtRC[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxBinPt, fMaxBinPt);
@@ -246,6 +243,13 @@ void AliAnalysisTaskDeltaPt::UserCreateOutputObjects()
       fHistEmbNotFoundPhiEta[i]->GetXaxis()->SetTitle("#eta");
       fHistEmbNotFoundPhiEta[i]->GetYaxis()->SetTitle("#phi");
       fOutput->Add(fHistEmbNotFoundPhiEta[i]);
+
+      histname = "fHistRhoVSEmbBkg_";
+      histname += i;
+      fHistRhoVSEmbBkg[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt*2, fNbins, fMinBinPt, fMaxBinPt);
+      fHistRhoVSEmbBkg[i]->GetXaxis()->SetTitle("A#rho [GeV/c]");
+      fHistRhoVSEmbBkg[i]->GetYaxis()->SetTitle("background of embedded track [GeV/c]");
+      fOutput->Add(fHistRhoVSEmbBkg[i]);
       
       histname = "fHistDeltaPtEmb_";
       histname += i;
@@ -285,7 +289,7 @@ Bool_t AliAnalysisTaskDeltaPt::FillHistograms()
     GetRandomCone(RCpt, RCeta, RCphi, 0);
     if (RCpt > 0) {
       fHistRCPhiEta->Fill(RCeta, RCphi);
-      fHistRhoVSRCPt->Fill(fRhoVal * rcArea, RCpt);
+      fHistRhoVSRCPt[fCentBin]->Fill(fRhoVal, RCpt);
 
       fHistRCPt[fCentBin]->Fill(RCpt / rcArea);
       fHistDeltaPtRC[fCentBin]->Fill(RCpt - rcArea * fRhoVal);
@@ -369,7 +373,7 @@ Bool_t AliAnalysisTaskDeltaPt::FillHistograms()
     fHistEmbJetPhiEta->Fill(embJet->Eta(), embJet->Phi());
 
     fHistDeltaPtEmb[fCentBin]->Fill(embJet->Pt() - embJet->Area() * fRhoVal - probePt);
-    fHistRhoVSEmbBkg->Fill(embJet->Area() * fRhoVal, embJet->Pt() - probePt);
+    fHistRhoVSEmbBkg[fCentBin]->Fill(fRhoVal, embJet->Pt() - probePt);
   }
   else {
     if (fEmbTracks)
index b344d01..63a59bc 100644 (file)
@@ -34,7 +34,7 @@ class AliAnalysisTaskDeltaPt : public AliAnalysisTaskEmcalJet {
   void                        ExecOnce()                                                                                    ;
   Bool_t                      FillHistograms()                                                                              ;
   void                        GetLeadingJets(Int_t &maxJetIndex, Int_t &max2JetIndex)                                       ;
-  void                        DoEmbJetLoop(AliEmcalJet* &embJet, TObject* &embPart)                                            ;
+  void                        DoEmbJetLoop(AliEmcalJet* &embJet, TObject* &embPart)                                         ;
   void                        DoEmbTrackLoop()                                                                              ;
   void                        DoEmbClusterLoop()                                                                            ;
   void                        GetRandomCone(Float_t &pt, Float_t &eta, Float_t &phi, 
@@ -63,7 +63,7 @@ class AliAnalysisTaskDeltaPt : public AliAnalysisTaskEmcalJet {
   TH1F                       *fHistRCPtExLJ[4];            //!Random cone pt, imposing min distance from leading jet
   TH1F                       *fHistRCPtRand[4];            //!Random cone pt, randomized particles
   TH2F                       *fHistRCPtExLJVSDPhiLJ;       //!Random cone pt, imposing min distance from leading jet, vs. deltaPhi leading jet
-  TH2F                       *fHistRhoVSRCPt;              //!Area(RC) * rho vs. Pt(RC)
+  TH2F                       *fHistRhoVSRCPt[4];           //!Area(RC) * rho vs. Pt(RC)
   TH1F                       *fHistDeltaPtRC[4];           //!deltaPt = Pt(RC) - A * rho
   TH1F                       *fHistDeltaPtRCExLJ[4];       //!deltaPt = Pt(RC) - A * rho, imposing min distance from leading jet
   TH1F                       *fHistDeltaPtRCRand[4];       //!deltaPt = Pt(RC) - A * rho, randomzied particles
@@ -77,7 +77,7 @@ class AliAnalysisTaskDeltaPt : public AliAnalysisTaskEmcalJet {
   TH2F                       *fHistEmbJetPhiEta;           //!Phi-Eta distribution of embedded jets
   TH2F                       *fHistEmbPartPhiEta;          //!Phi-Eta distribution of embedded particles
   TH1F                       *fHistDistEmbPartJetAxis[4];  //!Distance between embedded particle and jet axis
-  TH2F                       *fHistRhoVSEmbBkg;            //!Area(embjet) * rho vs. Pt(embjet) - Pt(embtrack)
+  TH2F                       *fHistRhoVSEmbBkg[4];         //!Area(embjet) * rho vs. Pt(embjet) - Pt(embtrack)
   TH1F                       *fHistDeltaPtEmb[4];          //!deltaPt = Pt(embjet) - Area(embjet) * rho - Pt(embtrack)
 
  private:
index e51df0c..489cefb 100644 (file)
@@ -26,7 +26,6 @@ ClassImp(AliAnalysisTaskSAJF)
 AliAnalysisTaskSAJF::AliAnalysisTaskSAJF() : 
   AliAnalysisTaskEmcalJet("AliAnalysisTaskSAJF", kTRUE),
   fLeadingHadronType(0),
-  fHistRhoVSleadJetPt(0),
   fNjetsVsCent(0)
 
 {
@@ -37,6 +36,7 @@ AliAnalysisTaskSAJF::AliAnalysisTaskSAJF() :
     fHistLeadingJetPt[i] = 0;
     fHist2LeadingJetPt[i] = 0;
     fHistLeadingJetCorrPt[i] = 0;
+    fHistRhoVSleadJetPt[i] = 0;
     fHistJetPhiEta[i] = 0;
     fHistJetsPtArea[i] = 0;
     fHistJetsCorrPtArea[i] = 0;
@@ -55,7 +55,6 @@ AliAnalysisTaskSAJF::AliAnalysisTaskSAJF() :
 AliAnalysisTaskSAJF::AliAnalysisTaskSAJF(const char *name) : 
   AliAnalysisTaskEmcalJet(name, kTRUE),
   fLeadingHadronType(0),
-  fHistRhoVSleadJetPt(0),
   fNjetsVsCent(0)
 {
   // Standard constructor.
@@ -65,6 +64,7 @@ AliAnalysisTaskSAJF::AliAnalysisTaskSAJF(const char *name) :
     fHistLeadingJetPt[i] = 0;
     fHist2LeadingJetPt[i] = 0;
     fHistLeadingJetCorrPt[i] = 0;
+    fHistRhoVSleadJetPt[i] = 0;
     fHistJetPhiEta[i] = 0;
     fHistJetsPtArea[i] = 0;
     fHistJetsCorrPtArea[i] = 0;
@@ -106,11 +106,6 @@ void AliAnalysisTaskSAJF::UserCreateOutputObjects()
 
   AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
 
-  fHistRhoVSleadJetPt = new TH2F("fHistRhoVSleadJetPt","fHistRhoVSleadJetPt", fNbins, fMinBinPt, fMaxBinPt, fNbins, fMinBinPt, fMaxBinPt);
-  fHistRhoVSleadJetPt->GetXaxis()->SetTitle("#rho * area (GeV/c)");
-  fHistRhoVSleadJetPt->GetYaxis()->SetTitle("Leading jet p_{T} (GeV/c)");
-  fOutput->Add(fHistRhoVSleadJetPt);
-
   fNjetsVsCent = new TH2F("fNjetsVsCent","fNjetsVsCent", 100, 0, 100, 150, -0.5, 149.5);
   fNjetsVsCent->GetXaxis()->SetTitle("Centrality (%)");
   fNjetsVsCent->GetYaxis()->SetTitle("# of jets");
@@ -162,6 +157,13 @@ void AliAnalysisTaskSAJF::UserCreateOutputObjects()
     fHistLeadingJetCorrPt[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
     fHistLeadingJetCorrPt[i]->GetYaxis()->SetTitle("counts");
     fOutput->Add(fHistLeadingJetCorrPt[i]);
+
+    histname = "fHistRhoVSleadJetPt_";
+    histname += i;
+    fHistRhoVSleadJetPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt*2, fNbins, fMinBinPt, fMaxBinPt);
+    fHistRhoVSleadJetPt[i]->GetXaxis()->SetTitle("#rho * area (GeV/c)");
+    fHistRhoVSleadJetPt[i]->GetYaxis()->SetTitle("Leading jet p_{T} (GeV/c)");
+    fOutput->Add(fHistRhoVSleadJetPt[i]);
     
     histname = "fHistJetPhiEta_";
     histname += i;
@@ -307,7 +309,7 @@ Bool_t AliAnalysisTaskSAJF::FillHistograms()
 
   if (jet) {
     fHistLeadingJetPt[fCentBin]->Fill(jet->Pt());
-    fHistRhoVSleadJetPt->Fill(fRhoVal * jet->Area(), jet->Pt());
+    fHistRhoVSleadJetPt[fCentBin]->Fill(fRhoVal, jet->Pt());
     fHistLeadingJetCorrPt[fCentBin]->Fill(maxJetCorrPt);
   }
 
index cd2fc04..8928798 100644 (file)
@@ -36,7 +36,7 @@ class AliAnalysisTaskSAJF : public AliAnalysisTaskEmcalJet {
   TH1F                       *fHistLeadingJetPt[4];        //!Leading jet pt spectrum
   TH1F                       *fHist2LeadingJetPt[4];       //!Second leading jet pt spectrum
   TH1F                       *fHistLeadingJetCorrPt[4];    //!Corrected leading jet pt spectrum
-  TH2F                       *fHistRhoVSleadJetPt;         //!Area(leadjet) * rho vs. leading jet pt
+  TH2F                       *fHistRhoVSleadJetPt[4];      //!Area(leadjet) * rho vs. leading jet pt
   TH2F                       *fNjetsVsCent;                //!No. of jets vs. centrality
 
   // Inclusive jets histograms
@@ -54,6 +54,6 @@ class AliAnalysisTaskSAJF : public AliAnalysisTaskEmcalJet {
   AliAnalysisTaskSAJF(const AliAnalysisTaskSAJF&);            // not implemented
   AliAnalysisTaskSAJF &operator=(const AliAnalysisTaskSAJF&); // not implemented
 
-  ClassDef(AliAnalysisTaskSAJF, 12) // jet analysis task
+  ClassDef(AliAnalysisTaskSAJF, 13) // jet analysis task
 };
 #endif
index ac3fc51..b3f0f8c 100644 (file)
@@ -23,6 +23,8 @@
 #include "AliExternalTrackParam.h"
 #include "AliTrackerBase.h"
 #include "AliLog.h"
+#include "AliEMCALGeometry.h"
+#include "AliEMCALGeoParams.h"
 
 #include "AliAnalysisTaskSAQA.h"
 
@@ -47,6 +49,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
   fHistDeltaEtaPt(0),
   fHistDeltaPhiPt(0),
   fHistNCellsEnergy(0),
+  fHistFcrossEnergy(0),
   fHistClusTimeEnergy(0),
   fHistCellsAbsIdEnergy(0),
   fHistChVSneCells(0),
@@ -89,6 +92,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
   fHistDeltaEtaPt(0),
   fHistDeltaPhiPt(0),
   fHistNCellsEnergy(0),
+  fHistFcrossEnergy(0),
   fHistClusTimeEnergy(0),
   fHistCellsAbsIdEnergy(0),
   fHistChVSneCells(0),
@@ -218,23 +222,28 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
       fHistClusPhiEtaEnergy[i] = new TH3F(histname, histname, 100, -1.2, 1.2, 201, 0, TMath::Pi() * 2.01, fNbins, fMinBinPt, fMaxBinPt);
       fHistClusPhiEtaEnergy[i]->GetXaxis()->SetTitle("#eta");
       fHistClusPhiEtaEnergy[i]->GetYaxis()->SetTitle("#phi");
-      fHistClusPhiEtaEnergy[i]->GetZaxis()->SetTitle("Energy (GeV)");
+      fHistClusPhiEtaEnergy[i]->GetZaxis()->SetTitle("E_{cluster} (GeV)");
       fOutput->Add(fHistClusPhiEtaEnergy[i]);
     }
 
     fHistClusTimeEnergy = new TH2F("fHistClusTimeEnergy","Time vs. energy of clusters", fNbins, fMinBinPt, fMaxBinPt, fNbins,  -1e-6, 1e-6);
-    fHistClusTimeEnergy->GetXaxis()->SetTitle("Energy (GeV)");
+    fHistClusTimeEnergy->GetXaxis()->SetTitle("E_{cluster} (GeV)");
     fHistClusTimeEnergy->GetYaxis()->SetTitle("Time");
     fOutput->Add(fHistClusTimeEnergy);
 
     fHistNCellsEnergy = new TH2F("fHistNCellsEnergy","Number of cells vs. energy of clusters", fNbins, fMinBinPt, fMaxBinPt, 30, 0, 30);
-    fHistNCellsEnergy->GetXaxis()->SetTitle("Energy (GeV)");
+    fHistNCellsEnergy->GetXaxis()->SetTitle("E_{cluster} (GeV)");
     fHistNCellsEnergy->GetYaxis()->SetTitle("N_{cells}");
     fOutput->Add(fHistNCellsEnergy); 
+
+    fHistFcrossEnergy = new TH2F("fHistFcrossEnergy","fHistFcrossEnergy", fNbins, fMinBinPt, fMaxBinPt, 200, -3.5, 1.5);
+    fHistFcrossEnergy->GetXaxis()->SetTitle("E_{cluster} (GeV)");
+    fHistFcrossEnergy->GetYaxis()->SetTitle("F_{cross}");
+    fOutput->Add(fHistFcrossEnergy); 
      
     fHistCellsAbsIdEnergy = new TH2F("fHistCellsAbsIdEnergy","fHistCellsAbsIdEnergy", 11600,0,11599,(Int_t)(fNbins / 2), fMinBinPt, fMaxBinPt / 2);
     fHistCellsAbsIdEnergy->GetXaxis()->SetTitle("cell abs. Id");
-    fHistCellsAbsIdEnergy->GetYaxis()->SetTitle("Energy (GeV)");
+    fHistCellsAbsIdEnergy->GetYaxis()->SetTitle("E_{cluster} (GeV)");
     fHistCellsAbsIdEnergy->GetZaxis()->SetTitle("counts");    
     fOutput->Add(fHistCellsAbsIdEnergy);
     
@@ -377,6 +386,65 @@ Int_t AliAnalysisTaskSAQA::DoCellLoop(Float_t &sum, Float_t &sum_cut)
 }
 
 //________________________________________________________________________
+Double_t AliAnalysisTaskSAQA::GetFcross(AliVCluster *cluster, AliVCaloCells *cells)
+{
+  Int_t    AbsIdseed  = -1;
+  Double_t Eseed      = 0;
+  for (Int_t i = 0; i < cluster->GetNCells(); i++) {
+    if (cells->GetCellAmplitude(cluster->GetCellAbsId(i)) > AbsIdseed) {
+      Eseed     = cells->GetCellAmplitude(cluster->GetCellAbsId(i));
+      AbsIdseed = cluster->GetCellAbsId(i);
+    }
+  }
+
+  if (Eseed < 1e-9)
+    return 100;
+
+  Int_t imod = -1, iphi =-1, ieta=-1,iTower = -1, iIphi = -1, iIeta = -1; 
+  fGeom->GetCellIndex(AbsIdseed,imod,iTower,iIphi,iIeta); 
+  fGeom->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,iphi,ieta);  
+  
+  //Get close cells index and energy, not in corners
+  
+  Int_t absID1 = -1;
+  Int_t absID2 = -1;
+  
+  if (iphi < AliEMCALGeoParams::fgkEMCALRows-1) absID1 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi+1, ieta);
+  if (iphi > 0)                                 absID2 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi-1, ieta);
+  
+  // In case of cell in eta = 0 border, depending on SM shift the cross cell index
+  
+  Int_t absID3 = -1;
+  Int_t absID4 = -1;
+  
+  if (ieta == AliEMCALGeoParams::fgkEMCALCols-1 && !(imod%2)) {
+    absID3 = fGeom->GetAbsCellIdFromCellIndexes(imod+1, iphi, 0);
+    absID4 = fGeom->GetAbsCellIdFromCellIndexes(imod,   iphi, ieta-1); 
+  }
+  else if (ieta == 0 && imod%2) {
+    absID3 = fGeom->GetAbsCellIdFromCellIndexes(imod,   iphi, ieta+1);
+    absID4 = fGeom->GetAbsCellIdFromCellIndexes(imod-1, iphi, AliEMCALGeoParams::fgkEMCALCols-1); 
+  }
+  else {
+    if (ieta < AliEMCALGeoParams::fgkEMCALCols-1) 
+      absID3 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
+    if (ieta > 0)                                 
+      absID4 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1); 
+  }
+  
+  Double_t  ecell1 = cells->GetCellAmplitude(absID1);
+  Double_t  ecell2 = cells->GetCellAmplitude(absID2);
+  Double_t  ecell3 = cells->GetCellAmplitude(absID3);
+  Double_t  ecell4 = cells->GetCellAmplitude(absID4);
+
+  Double_t Ecross = ecell1 + ecell2 + ecell3 + ecell4;
+  
+  Double_t Fcross = 1 - Ecross/Eseed;
+
+  return Fcross;
+}
+
+//________________________________________________________________________
 Float_t AliAnalysisTaskSAQA::DoClusterLoop()
 {
   // Do cluster loop.
@@ -384,6 +452,8 @@ Float_t AliAnalysisTaskSAQA::DoClusterLoop()
   if (!fCaloClusters)
     return 0;
 
+  AliVCaloCells *cells = InputEvent()->GetEMCALCells();
+
   Float_t sum = 0;
 
   // Cluster loop
@@ -409,6 +479,9 @@ Float_t AliAnalysisTaskSAQA::DoClusterLoop()
 
     fHistClusTimeEnergy->Fill(cluster->E(), cluster->GetTOF());
 
+    if (cells)
+      fHistFcrossEnergy->Fill(cluster->E(), GetFcross(cluster, cells));
+
     fNclusters++;
   }
 
index 79500b8..33068d4 100644 (file)
@@ -30,6 +30,7 @@ class AliAnalysisTaskSAQA : public AliAnalysisTaskEmcalJet {
   Float_t                     DoTrackLoop()                                                 ;
   Float_t                     DoClusterLoop()                                               ;
   void                        DoJetLoop()                                                   ;
+  Double_t                    GetFcross(AliVCluster *cluster, AliVCaloCells *cells)         ;
 
   Float_t                     fCellEnergyCut;            // Energy cell cut
   Int_t                       fNclusters;                //!Number of accepted clusters in the event
@@ -55,6 +56,7 @@ class AliAnalysisTaskSAQA : public AliAnalysisTaskEmcalJet {
   // Clusters
   TH3F                       *fHistClusPhiEtaEnergy[4];  //!Phi-Eta-Energy distribution of clusters
   TH2F                       *fHistNCellsEnergy;         //!Number of cells vs. energy of cluster
+  TH2F                       *fHistFcrossEnergy;         //!Fcross vs. energy of cluster
   TH2F                       *fHistClusTimeEnergy;       //!Time vs. energy of cluster
 
   //Jets
@@ -77,6 +79,6 @@ class AliAnalysisTaskSAQA : public AliAnalysisTaskEmcalJet {
   AliAnalysisTaskSAQA(const AliAnalysisTaskSAQA&);            // not implemented
   AliAnalysisTaskSAQA &operator=(const AliAnalysisTaskSAQA&); // not implemented
 
-  ClassDef(AliAnalysisTaskSAQA, 14) // Quality task for Emcal analysis
+  ClassDef(AliAnalysisTaskSAQA, 15) // Quality task for Emcal analysis
 };
 #endif
index b580185..464e49a 100644 (file)
@@ -3,9 +3,10 @@
 AliAnalysisTaskScale* AddTaskScale(
   const char *nTracks        = "Tracks",
   const char *nClusters      = "CaloClustersCorr",
-  Double_t    ptcut          = 0.150,
-  const char *outfilename    = "AnalysisResults.root",
-  const char *taskname       = "Scale"
+  Double_t    trackptcut     = 0.150,
+  Double_t    clusptcut      = 0.150,
+  const char *taskname       = "Scale",
+  const char *outfilename    = "AnalysisResults.root"
 )
 {  
   // Get the pointer to the existing analysis manager via the static access method.
@@ -29,12 +30,12 @@ AliAnalysisTaskScale* AddTaskScale(
   // Init the task and do settings
   //-------------------------------------------------------
 
-  TString name(Form("%s_%s_%s_%d", taskname, nTracks, nClusters, TMath::FloorNint(ptcut*1000)));
+  TString name(Form("%s_%s_%s_%d_%d", taskname, nTracks, nClusters, TMath::FloorNint(trackptcut*1000), TMath::FloorNint(clusptcut*1000)));
   AliAnalysisTaskScale *scaletask = new AliAnalysisTaskScale(name);
   scaletask->SetTracksName(nTracks);
   scaletask->SetClusName(nClusters);
-  scaletask->SetPtCut(ptcut);
-  scaletask->SetAnaType(AliAnalysisTaskEmcal::kEMCAL);
+  scaletask->SetTrackPtCut(trackptcut);
+  scaletask->SetClusPtCut(clusptcut);
 
   //-------------------------------------------------------
   // Final settings, pass to manager and set the containers