changes from fzhou
authormcosenti <mcosenti@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 21 Dec 2012 13:48:17 +0000 (13:48 +0000)
committermcosenti <mcosenti@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 21 Dec 2012 13:48:17 +0000 (13:48 +0000)
PWGGA/EMCALTasks/AliAnalysisTaskPi0V2.cxx
PWGGA/EMCALTasks/AliAnalysisTaskPi0V2.h

index 19c66bc..6fc84e4 100644 (file)
@@ -44,6 +44,7 @@
 #include "AliESDInputHandler.h"
 #include "AliAODEvent.h"
 #include "AliMCEvent.h"
+#include "AliVCluster.h"
 
 #include "AliEventplane.h"
 #include "AliEMCALGeometry.h"
@@ -61,9 +62,9 @@ AliAnalysisTaskPi0V2::AliAnalysisTaskPi0V2(const char *name) // All data members
    :AliAnalysisTaskSE(name),
     fOutput(0),
     fESD(0),
-    fTracksName("PicoTrack"),
+    fTracksName("PicoTrack"), fV1ClusName("CaloCluster"), fV2ClusName("CaloCluster"),
     fTrigClass("CVLN_|CSEMI_|CCENT|CVHN"),
-    fTracks(0),
+    fTracks(0), fV1Clus(0), fV2Clus(0),
     fRunNumber(-999.),
     fEvtSelect(1),
     fVtxCut(15.),
@@ -260,7 +261,7 @@ Bool_t AliAnalysisTaskPi0V2::IsWithinFiducialVolume(Short_t id) const
   return kFALSE;
 }
 //______________________________________________________________________
-Bool_t AliAnalysisTaskPi0V2::IsGoodCluster(const AliESDCaloCluster *c) const
+Bool_t AliAnalysisTaskPi0V2::IsGoodCluster(const AliVCluster *c) const
 {
 
   if(!c)
@@ -297,7 +298,7 @@ Bool_t AliAnalysisTaskPi0V2::IsGoodCluster(const AliESDCaloCluster *c) const
 
 }
 //________________________________________________________________________________________________
-Bool_t AliAnalysisTaskPi0V2::IsGoodClusterV1(const AliESDCaloCluster *c) const
+Bool_t AliAnalysisTaskPi0V2::IsGoodClusterV1(const AliVCluster *c) const
 {
 
   if(!c)
@@ -437,7 +438,7 @@ void AliAnalysisTaskPi0V2::FillCluster(const TLorentzVector& p1, Double_t EPV0r,
 
 }
 //_________________________________________________________________________________________________
-void AliAnalysisTaskPi0V2::GetMom(TLorentzVector& p, const AliESDCaloCluster *c, Double_t *vertex)
+void AliAnalysisTaskPi0V2::GetMom(TLorentzVector& p, const AliVCluster *c, Double_t *vertex)
 {
   // Calculate momentum.
   Float_t posMom[3];
@@ -784,9 +785,20 @@ void AliAnalysisTaskPi0V2::UserExec(Option_t *)
    hdifV0C_V0A->Fill(fCentrality, TMath::Cos(2*(fEPV0C - fEPV0A)));
     // Cluster loop for reconstructed event
 
-   Int_t nCluster =  fESD->GetNumberOfCaloClusters(); 
+   if (!fV2ClusName.IsNull() && !fV2Clus) {
+     fV2Clus = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fV2ClusName));
+     if (!fV2Clus) {
+       AliError(Form("%s: Could not retrieve tracks %s!", GetName(), fV2ClusName.Data()));
+       return;
+     }
+  }
+
+
+//   Int_t nCluster =  fESD->GetNumberOfCaloClusters(); 
+   Int_t nCluster =  fV2Clus->GetEntries(); 
    for(Int_t i=0; i<nCluster; ++i){
-     AliESDCaloCluster *c1 = fESD->GetCaloCluster(i);
+//     AliESDCaloCluster *c1 = fESD->GetCaloCluster(i);
+     AliVCluster *c1 = static_cast<AliVCluster*>(fV2Clus->At(i));      
      hClusDxDZA->Fill(c1->GetTrackDz(), c1->GetTrackDx());
      Float_t clsPosEt[3] = {0,0,0};
      c1->GetPosition(clsPosEt);
@@ -800,7 +812,8 @@ void AliAnalysisTaskPi0V2::UserExec(Option_t *)
      TLorentzVector p1;
      GetMom(p1, c1, vertex);
      for(Int_t j=i+1; j<nCluster; ++j){
-       AliESDCaloCluster *c2 = fESD->GetCaloCluster(j);
+//       AliESDCaloCluster *c2 = fESD->GetCaloCluster(j);
+       AliVCluster *c2 = static_cast<AliVCluster*>(fV2Clus->At(i));      
        if(!c2->IsEMCAL()) continue;
        if(!IsGoodCluster(c2)) continue;
        TLorentzVector p2;
@@ -810,8 +823,17 @@ void AliAnalysisTaskPi0V2::UserExec(Option_t *)
    }
 
   if(isV1Clus){
-    for(Int_t i=0; i<nCluster; ++i){
-      AliESDCaloCluster *c3 = fESD->GetCaloCluster(i);      
+    if (!fV2ClusName.IsNull() && !fV1Clus) {
+      fV1Clus = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fV1ClusName));
+      if (!fV1Clus) {
+       AliError(Form("%s: Could not retrieve tracks %s!", GetName(), fV1ClusName.Data()));
+       return;
+      }
+    }
+    Int_t nClusterV1 = fV1Clus->GetEntries();
+    for(Int_t i=0; i<nClusterV1; ++i){
+//      AliESDCaloCluster *c3 = fESD->GetCaloCluster(i);      
+      AliVCluster *c3 = static_cast<AliVCluster*>(fV1Clus->At(i));      
       if(!c3->IsEMCAL()) continue;
       if(!IsGoodClusterV1(c3)) continue;
       TLorentzVector p3;
index 650af0c..b85e093 100644 (file)
@@ -18,6 +18,7 @@ class TH2F;
 class TH3F;
 class TList;
 class AliESDCaloCluster;
+class AliVCluster;
 class AliESDtrackCuts;
 class AliESDEvent;
 class THnSparse;
@@ -40,12 +41,12 @@ class AliAnalysisTaskPi0V2 : public AliAnalysisTaskSE {
     Double_t           GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax) const;
     Double_t           GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const;
     Bool_t             IsWithinFiducialVolume(Short_t id) const;
-    Bool_t             IsGoodCluster(const AliESDCaloCluster *c) const;
-    Bool_t             IsGoodClusterV1(const AliESDCaloCluster *c) const;
+    Bool_t             IsGoodCluster(const AliVCluster *c) const;
+    Bool_t             IsGoodClusterV1(const AliVCluster *c) const;
     Bool_t             IsGoodPion(const TLorentzVector& p1, const TLorentzVector& p2) const;
     void               FillPion(const TLorentzVector& p1, const TLorentzVector& p2, Double_t EPV0r, Double_t EPV0A, Double_t EPV0C, Double_t EPTPC);
     void               FillCluster(const TLorentzVector& p1, Double_t EPV0r, Double_t EPV0A, Double_t EPV0C, Double_t EPTPC);
-    void               GetMom(TLorentzVector& p, const AliESDCaloCluster *c, Double_t *vertex);                
+    void               GetMom(TLorentzVector& p, const AliVCluster *c, Double_t *vertex);              
     void               SetEventMethod(Double_t e )     { fEvtSelect  =e ;}
     void               SetVtxCut(Double_t v )          { fVtxCut     =v ;}
     void               SetClusNcell(Double_t c )       { fNcellCut   =c ;}
@@ -64,8 +65,12 @@ class AliAnalysisTaskPi0V2 : public AliAnalysisTaskSE {
     TList                      *fOutput;               //! Output list
     AliESDEvent                        *fESD;                  //!ESD object
     TString                     fTracksName;           // name of track collection
+    TString                     fV1ClusName;           // name of V1 Clus collection
+    TString                     fV2ClusName;           // name of V1 Clus collection
     TString                     fTrigClass;            // trigger class name for event selection
     TClonesArray                *fTracks;              //! pico tracks specific for Skim ESD
+    TClonesArray                *fV1Clus;              //! Cluster Array for V1
+    TClonesArray                *fV2Clus;              //! Cluster Array for V2
     Int_t                      fRunNumber;             //! Run numbers
     Double_t                   fEvtSelect;             // 1 = MB+Semi+Central, 2 = MB+Semi, 3 = MB;
     Double_t                   fVtxCut;                // vertex cut