]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
keep overlap and fixes to isolation
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 21 Apr 2011 07:07:55 +0000 (07:07 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 21 Apr 2011 07:07:55 +0000 (07:07 +0000)
PWG4/CaloCalib/AliAnalysisTaskEMCALPi0PbPb.cxx
PWG4/CaloCalib/AliAnalysisTaskEMCALPi0PbPb.h

index 5f0b3a8d09c73bb4b1c5f4e4e12fca449ef611f0..707a97b013a7cff866f3c4921fad358bb97a2448 100644 (file)
@@ -22,6 +22,7 @@
 #include "AliCentrality.h"
 #include "AliEMCALGeoUtils.h"
 #include "AliEMCALGeometry.h"
+#include "AliEMCALRecPoint.h"
 #include "AliEMCALRecoUtils.h"
 #include "AliESDCaloTrigger.h"
 #include "AliESDEvent.h"
@@ -842,9 +843,9 @@ void AliAnalysisTaskEMCALPi0PbPb::CalcClusterProps()
     if (!TMath::IsNaN(clus->GetDispersion()))
       cl->fDisp   = clus->GetDispersion();
     if (!TMath::IsNaN(clus->GetM20()))
-      cl->fM20      = clus->GetM20();
+      cl->fM20    = clus->GetM20();
     if (!TMath::IsNaN(clus->GetM02()))
-      cl->fM02      = clus->GetM02();
+      cl->fM02    = clus->GetM02();
     Double_t maxAxis = 0, minAxis = 0;
     GetSigma(clus,maxAxis,minAxis);
     clus->SetTOF(maxAxis);     // store sigma in TOF
@@ -859,6 +860,7 @@ void AliAnalysisTaskEMCALPi0PbPb::CalcClusterProps()
     cl->fTrIso2   = GetTrackIsolation(clusterVec.Eta(),clusterVec.Phi(),fIsoDist, 2);
     cl->fCeCore   = GetCellIsolation(clsVec.Eta(),clsVec.Phi(),0.05);
     cl->fCeIso    = GetCellIsolation(clsVec.Eta(),clsVec.Phi(),fIsoDist);
+
     Double_t trigpen = 0;
     Double_t trignen = 0;
     for(Int_t j=0; j<cl->fN; ++j) {
@@ -882,6 +884,7 @@ void AliAnalysisTaskEMCALPi0PbPb::CalcClusterProps()
       cl->fIsTrigM   = 1;
       cl->fTrigMaskE = trignen;      
     }
+    cl->fIsShared = IsShared(clus);
 
     // track matching
     Double_t mind2 = 1e10;
@@ -1559,20 +1562,41 @@ Double_t AliAnalysisTaskEMCALPi0PbPb::GetCellIsolation(Double_t cEta, Double_t c
   Int_t ncells = cells->GetNumberOfCells();
   for (Int_t i = 0; i<ncells; ++i) {
     Int_t absID    = TMath::Abs(cells->GetCellNumber(i));
-    Double_t cellE = cells->GetAmplitude(i);
-    Float_t eta, phi;
+    Float_t eta=-1, phi=-1;
     fGeom->EtaPhiFromIndex(absID,eta,phi);
-    Double_t phidiff = TVector2::Phi_0_2pi(phi-cPhi);
+    Double_t phidiff = TVector2::Phi_mpi_pi(phi-cPhi);
     Double_t dist = (eta-cEta)*(eta-cEta)+phidiff*phidiff;
     if(dist>rad2)
       continue;
+    Double_t cellE = cells->GetAmplitude(i);
     cellIsolation += cellE;
   }
   return cellIsolation;
 }
 
 //________________________________________________________________________
-Double_t AliAnalysisTaskEMCALPi0PbPb::GetMaxCellEnergy(AliVCluster *cluster, Short_t &id) const
+Double_t AliAnalysisTaskEMCALPi0PbPb::GetCellEnergy(const AliVCluster *cluster) const
+{
+  // Get maximum energy of attached cell.
+
+  Double_t ret = 0;
+  Int_t ncells = cluster->GetNCells();
+  if (fEsdCells) {
+    for (Int_t i=0; i<ncells; i++) {
+      Double_t e = fEsdCells->GetCellAmplitude(TMath::Abs(cluster->GetCellAbsId(i)));
+      ret += e;
+      }
+  } else {
+    for (Int_t i=0; i<ncells; i++) {
+      Double_t e = fAodCells->GetCellAmplitude(TMath::Abs(cluster->GetCellAbsId(i)));
+      ret += e;
+    }
+  }
+  return ret;
+}
+
+//________________________________________________________________________
+Double_t AliAnalysisTaskEMCALPi0PbPb::GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const
 {
   // Get maximum energy of attached cell.
 
@@ -1599,7 +1623,7 @@ Double_t AliAnalysisTaskEMCALPi0PbPb::GetMaxCellEnergy(AliVCluster *cluster, Sho
 }
 
 //________________________________________________________________________
-void AliAnalysisTaskEMCALPi0PbPb::GetSigma(AliVCluster *c, Double_t& sigmaMax, Double_t &sigmaMin) const
+void AliAnalysisTaskEMCALPi0PbPb::GetSigma(const AliVCluster *c, Double_t& sigmaMax, Double_t &sigmaMin) const
 {
   // Calculate the (E) weighted variance along the longer (eigen) axis.
 
@@ -1653,7 +1677,7 @@ void AliAnalysisTaskEMCALPi0PbPb::GetSigma(AliVCluster *c, Double_t& sigmaMax, D
 }
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskEMCALPi0PbPb::GetNCells(AliVCluster *c, Double_t emin) const
+Int_t AliAnalysisTaskEMCALPi0PbPb::GetNCells(const AliVCluster *c, Double_t emin) const
 {
   // Calculate number of attached cells above emin.
 
@@ -1690,7 +1714,7 @@ Double_t AliAnalysisTaskEMCALPi0PbPb::GetTrackIsolation(Double_t cEta, Double_t
       continue;
     Float_t eta = track->Eta();
     Float_t phi = track->Phi();
-    Double_t phidiff = TVector2::Phi_0_2pi(phi-cPhi);
+    Double_t phidiff = TVector2::Phi_mpi_pi(phi-cPhi);
     Double_t dist = (eta-cEta)*(eta-cEta)+phidiff*phidiff;
     if(dist>rad2)
       continue;
@@ -1699,4 +1723,29 @@ Double_t AliAnalysisTaskEMCALPi0PbPb::GetTrackIsolation(Double_t cEta, Double_t
   return trkIsolation;
 }
 
+//________________________________________________________________________
+Bool_t AliAnalysisTaskEMCALPi0PbPb::IsShared(const AliVCluster *c) const
+{
+  // Returns if cluster shared across super modules.
+
+  AliVCaloCells *cells = fEsdCells;
+  if (!cells)
+    cells = fAodCells;
+  if (!cells)
+    return 0;
+
+  Int_t n = -1;
+  Int_t ncells = c->GetNCells();
+  for(Int_t j=0; j<ncells; ++j) {
+    Int_t id = TMath::Abs(c->GetCellAbsId(j));
+    Int_t got = id / (24*48);
+    if (n==-1) {
+      n = got;
+      continue;
+    }
+    if (got!=n)
+      return 1;
+  }
+  return 0;
+}
 
index 9e9ef9139f5117ea358fab5b552f53fe06589dad..324e61b1bb377485325816def05476b075482865 100644 (file)
@@ -72,13 +72,15 @@ class AliAnalysisTaskEMCALPi0PbPb : public AliAnalysisTaskSE {
   virtual void FillPionHists();
   void         FillVertex(AliStaVertex *v, const AliESDVertex *esdv);
   void         FillVertex(AliStaVertex *v, const AliAODVertex *aodv);
-  Double_t     GetCellIsolation(Double_t cEta, Double_t cPhi, Double_t radius=0.2)                  const;
-  Double_t     GetMaxCellEnergy(AliVCluster *c) const { Short_t id=-1; return GetMaxCellEnergy(c,id); }
-  Double_t     GetMaxCellEnergy(AliVCluster *c, Short_t &id)                                        const;
-  Int_t        GetNCells(AliVCluster *c, Double_t emin=0.)                                          const;
-  void         GetSigma(AliVCluster *c, Double_t &sigmaMax, Double_t &sigmaMin)                     const;
-  Double_t     GetTrackIsolation(Double_t cEta, Double_t cPhi, Double_t radius=0.2, Double_t pt=0.) const;
-  Double_t     GetTrigEnergy(AliVCluster *c)                                                        const;
+  Double_t     GetCellIsolation(Double_t cEta, Double_t cPhi, Double_t radius=0.2)                        const;
+  Double_t     GetCellEnergy(const AliVCluster *c)    const;
+  Double_t     GetMaxCellEnergy(const AliVCluster *c) const { Short_t id=-1; return GetMaxCellEnergy(c,id); }
+  Double_t     GetMaxCellEnergy(const AliVCluster *c, Short_t &id)                                        const;
+  Int_t        GetNCells(const AliVCluster *c, Double_t emin=0.)                                          const;
+  void         GetSigma(const AliVCluster *c, Double_t &sigmaMax, Double_t &sigmaMin)                     const;
+  Double_t     GetTrackIsolation(Double_t cEta, Double_t cPhi, Double_t radius=0.2, Double_t pt=0.)       const;
+  Double_t     GetTrigEnergy(const AliVCluster *c)                                                        const;
+  Bool_t       IsShared(const AliVCluster *c)                                                             const;
 
     // input members
   TString                fCentVar;                // variable for centrality determination
@@ -261,7 +263,7 @@ class AliStaCluster : public TObject
   AliStaCluster() : TObject(), fE(0), fR(0), fEta(0), fPhi(0), fN(0), fN1(0), fN3(0), fIdMax(0), fEmax(0),  
                     fDbc(-1), fDisp(-1), fM20(0), fM02(0), fEcc(0), fSig(0), fIsTrackM(0), fTrDz(0), fTrDr(-1), 
                     fTrEp(0), fTrIso(0), fTrIso1(0), fTrIso2(0), fCeIso(0), fCeCore(0), fIsTrigM(0), fTrigE(-1), 
-                    fTrigMaskE(-1) {;}
+                    fTrigMaskE(-1), fIsShared(0) {;}
 
  public:
   Double32_t    fE;                //[0,0,16] energy
@@ -291,8 +293,9 @@ class AliStaCluster : public TObject
   Bool_t        fIsTrigM;          //         if true then trigger values are set
   Double32_t    fTrigE;            //[0,0,16] trigger tower energy
   Double32_t    fTrigMaskE;        //[0,0,16] masked trigger tower energy
+  Bool_t        fIsShared;         //         =true then extends across more than one super module
 
-  ClassDef(AliStaCluster,3) // Cluster class
+  ClassDef(AliStaCluster,4) // Cluster class
 };
 
 class AliStaTrigger : public TObject