including new Salvatore's patch
authormcosenti <mcosenti@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 18 Apr 2012 07:40:38 +0000 (07:40 +0000)
committermcosenti <mcosenti@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 18 Apr 2012 07:40:38 +0000 (07:40 +0000)
12 files changed:
PWGGA/CMakelibPWGGAEMCALTasks.pkg
PWGGA/EMCALJetTasks/AliEmcalJetTask.cxx
PWGGA/EMCALJetTasks/AliEmcalJetTask.h
PWGGA/EMCALJetTasks/AliHadCorrTask.cxx
PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.cxx
PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.h
PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.cxx
PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.h
PWGGA/EMCALTasks/AliEmcalJet.cxx
PWGGA/EMCALTasks/AliEmcalJet.h
PWGGA/EMCALTasks/macros/AddTaskEmcalIsolatedPhotons.C
PWGGA/PWGGAEMCALTasksLinkDef.h

index 3906ed8..56c765a 100644 (file)
@@ -46,6 +46,7 @@ set ( SRCS
  EMCALTasks/AliAnalysisTaskTrgContam.cxx
  EMCALTasks/AliAnalysisTaskEMCALPhoton.cxx
  EMCALTasks/AliEmcalIsolatedPhotonsTask.cxx
+ EMCALTasks/AliEmcalAodTrackFilterTask.cxx     
 )
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
index e747395..d2a83d9 100644 (file)
@@ -10,8 +10,8 @@
 #include <TParticle.h>
 #include "AliAnalysisManager.h"
 #include "AliCentrality.h"
-#include "AliESDCaloCluster.h"
-#include "AliESDtrack.h"
+#include "AliVCluster.h"
+#include "AliVTrack.h"
 #include "AliEmcalJet.h"
 #include "AliFJWrapper.h"
 
@@ -183,21 +183,31 @@ void AliEmcalJetTask::FindJets(TObjArray *tracks, TObjArray *clus, Int_t algo, D
     InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
     vector<fastjet::PseudoJet> constituents = fjw.GetJetConstituents(ij);
     Double_t neutralE = 0;Double_t maxTrack = 0;Double_t maxCluster=0;
+    jet->SetNumberOfTracks(constituents.size());
+    jet->SetNumberOfClusters(constituents.size());
+    Int_t nt = 0;
+    Int_t nc = 0;
     for(UInt_t ic=0; ic<constituents.size(); ++ic) {
       Int_t uid = constituents[ic].user_index();
       if (uid>=0){
+       jet->AddTrackAt(uid, nt);
         AliVTrack *t = static_cast<AliVTrack*>(tracks->At(uid));
         if (t->Pt()>maxTrack)
           maxTrack=t->Pt();
+       nt++;
       } else {
+       jet->AddClusterAt(-(uid+1),nc);
         AliVCluster *c = dynamic_cast<AliVCluster*>(clus->At(-(uid+1)));
         TLorentzVector nP;
         c->GetMomentum(nP, vertex);
         neutralE += nP.P();
         if (nP.P()>maxCluster)
           maxCluster=nP.P();
+       nc++;
       }
     }
+    jet->SetNumberOfTracks(nt);
+    jet->SetNumberOfClusters(nc);
     jet->SetMaxTrackPt(maxTrack);
     jet->SetMaxClusterPt(maxCluster);
     jet->SetNEF(neutralE/jet->E());
index ad8e7f9..87a3b3c 100644 (file)
@@ -4,7 +4,6 @@
 // $Id$
 
 class TClonesArray;
-class AliESDtrackCuts;
 class TList;
 class TH1;
 class TH2;
index c0fab35..ac801bc 100644 (file)
@@ -1,20 +1,24 @@
 // $Id$
 
-#include "AliHadCorrTask.h"
 #include <TClonesArray.h>
 #include <TParticle.h>
+#include <TList.h>
+#include <TH1F.h>
+#include <TH2F.h>
+#include <TChain.h>
+#include <TLorentzVector.h>
+
+#include "AliCentrality.h"
 #include "AliEmcalJet.h"
 #include "AliAnalysisManager.h"
 #include "AliESDtrack.h"
 #include "AliFJWrapper.h"
 #include "AliESDCaloCluster.h"
-#include "TList.h"
-#include "TH1F.h"
-#include "TH2F.h"
-#include "TChain.h"
-#include <TLorentzVector.h>
-#include <AliCentrality.h>
+#include "AliAODCaloCluster.h"
 #include "AliPicoTrack.h"
+#include "AliVEventHandler.h"
+
+#include "AliHadCorrTask.h"
 
 ClassImp(AliHadCorrTask)
 
@@ -73,7 +77,24 @@ AliHadCorrTask::~AliHadCorrTask()
 void AliHadCorrTask::UserCreateOutputObjects()
 {
 
-  fOutClusters = new TClonesArray("AliESDCaloCluster");
+  AliVEventHandler* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
+  
+  if (!handler) {
+    AliError("Input handler not available!");
+    return;
+  }
+  if (handler->InheritsFrom("AliESDInputHandler")) {
+    fOutClusters = new TClonesArray("AliESDCaloCluster");
+  }
+  else if (handler->InheritsFrom("AliAODInputHandler")) {
+    fOutClusters = new TClonesArray("AliAODCaloCluster");
+  }
+  else {
+    AliError("Input handler not recognized!");
+    return;
+  }
+
   fOutClusters->SetName(fOutCaloName);
  
   OpenFile(1);
@@ -226,7 +247,17 @@ void AliHadCorrTask::UserExec(Option_t *)
 
       }//end had correction if
       if (energy>0){//Output new corrected clusters
-       AliESDCaloCluster *oc = new ((*fOutClusters)[clusCount]) AliESDCaloCluster(*(dynamic_cast<AliESDCaloCluster*>(c)));
+       AliVCluster *oc;
+       if (c->InheritsFrom("AliESDCaloCluster")) {
+         oc = new ((*fOutClusters)[clusCount]) AliESDCaloCluster(*(dynamic_cast<AliESDCaloCluster*>(c)));
+       }
+       else if (c->InheritsFrom("AliAODCaloCluster")) {
+         oc = new ((*fOutClusters)[clusCount]) AliAODCaloCluster(*(dynamic_cast<AliAODCaloCluster*>(c)));
+       }
+       else {
+         AliError("Cluster type not recognized (nor ESD neither AOD)!");
+         continue;
+       }
        oc->SetE(energy);
        clusCount++;
       }
index a189e95..21a42ad 100644 (file)
@@ -1,11 +1,14 @@
 // $Id$
 
-#include "AliEmcalClusTrackMatcherTask.h"
 #include <TClonesArray.h>
 #include <TString.h>
-#include "AliESDCaloCluster.h"
-#include "AliESDtrack.h"
+
+#include "AliVCluster.h"
+#include "AliVTrack.h"
 #include "AliPicoTrack.h"
+#include "AliLog.h"
+
+#include "AliEmcalClusTrackMatcherTask.h"
 
 ClassImp(AliEmcalClusTrackMatcherTask)
 
index cbb9151..4df9850 100644 (file)
@@ -4,7 +4,6 @@
 // $Id$
 
 class TClonesArray;
-class AliESDtrackCuts;
 
 #include "AliAnalysisTaskSE.h"
 
index cb931d8..9efcaa2 100644 (file)
@@ -18,6 +18,7 @@
 #include "AliESDtrackCuts.h"
 #include "AliEmcalJet.h"
 #include "AliVEventHandler.h"
+#include "AliPicoTrack.h"
 
 #include "AliEmcalIsolatedPhotonsTask.h"
 
@@ -30,7 +31,6 @@ AliEmcalIsolatedPhotonsTask::AliEmcalIsolatedPhotonsTask() :
   fTracksName("Tracks"),
   fCaloName("CaloClusters"),
   fJetsName("Jets"),
-  fSkimmedESD(0),
   fESDTrackCuts(0),
   fFilterBit(16),
   fTracks(0),
@@ -64,7 +64,6 @@ AliEmcalIsolatedPhotonsTask::AliEmcalIsolatedPhotonsTask(const char *name) :
   fTracksName("Tracks"),
   fCaloName("CaloClusters"),
   fJetsName("Jets"),
-  fSkimmedESD(0),
   fESDTrackCuts(0),
   fFilterBit(16),
   fTracks(0),
@@ -276,7 +275,18 @@ void AliEmcalIsolatedPhotonsTask::FillHistograms()
 
     fHistTracksPt->Fill(track->Pt());
     
-    //fHisTrPhiEta->Fill(track->Phi(), track->Eta());
+    if(track->InheritsFrom("AliExternalTrackParam")) {
+      AliExternalTrackParam *trackparam = dynamic_cast<AliExternalTrackParam*>(track);
+      fHistTrPhiEta->Fill(trackparam->Eta(), trackparam->Phi());
+    }
+    else if (track->InheritsFrom("AliAODTrack")) {
+      AliAODTrack *aodtrack = dynamic_cast<AliAODTrack*>(track);
+      fHistTrPhiEta->Fill(aodtrack->Eta(), aodtrack->Phi());
+    }
+    else if (track->InheritsFrom("AliPicoTrack")) {
+      AliPicoTrack *picotrack = dynamic_cast<AliPicoTrack*>(track);
+      fHistTrPhiEta->Fill(picotrack->Eta(), picotrack->Phi());
+    }
 
     Int_t clId = track->GetEMCALcluster();
     if (clId > -1) {
@@ -301,14 +311,26 @@ void AliEmcalIsolatedPhotonsTask::FillHistograms()
     fHistJetsEnergy->Fill(jet->E());
     fHistJetsNEF->Fill(jet->NEF());
     fHistJetsNE->Fill(jet->E() * jet->NEF());
+    //if (jet->E() <= 0)
+    //continue;
+    for (Int_t it = 0; it < jet->GetNumberOfTracks(); it++) {
+      Int_t trackid = jet->TrackAt(it);
+      AliVTrack *track = GetTrack(trackid);
+      if (track)
+       fHistJetsZ->Fill(track->Pt() / jet->E());
+    }
+    for (Int_t ic = 0; ic < jet->GetNumberOfClusters(); ic++) {
+      Int_t clusterid = jet->ClusterAt(ic);
+      AliVCluster *cluster = GetCaloCluster(clusterid);
+      if (cluster)
+       fHistJetsZ->Fill(cluster->E() / jet->E());
+    }
   } //jet loop 
 }
 
 //________________________________________________________________________
 Bool_t AliEmcalIsolatedPhotonsTask::AcceptTrack(AliVTrack *track)
 {
-  //if (fSkimmedESD) return 1;
-
   if (!strcmp(track->ClassName(), "AliESDTrack") && fESDTrackCuts) {
     AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
     if(esdtrack) {
index 47f61c5..332f759 100644 (file)
@@ -32,9 +32,6 @@ class AliEmcalIsolatedPhotonsTask : public AliAnalysisTaskSE {
   virtual AliESDtrackCuts    *GetTrackCuts()                          const { return fESDTrackCuts        ; }
   virtual void                SetAODFilterBit(const Int_t b)                { fFilterBit = b              ; }
   virtual Int_t               GetAODFilterBit()                       const { return fFilterBit           ; }
-  virtual void                SetSkimmedESD(const Bool_t s)                 { fSkimmedESD = s             ; }
-  virtual Bool_t              GetSkimmedESD()                         const { return fSkimmedESD          ; }
-
 
  protected:
 
@@ -53,7 +50,6 @@ class AliEmcalIsolatedPhotonsTask : public AliAnalysisTaskSE {
   TString                     fTracksName;             // name of track collection
   TString                     fCaloName;               // name of calo cluster collection
   TString                     fJetsName;               // name of jet collection
-  Bool_t                      fSkimmedESD;             // flag if skimmed ESD
   AliESDtrackCuts            *fESDTrackCuts;           // Track cuts
   Int_t                       fFilterBit;              // AOD filter bit
   TClonesArray               *fTracks;                 //!Tracks
index 2b4c688..dd5aab7 100644 (file)
@@ -11,7 +11,7 @@ AliEmcalJet::AliEmcalJet(Double_t px, Double_t py, Double_t pz)
     fEta(TMath::ASinH(pz/fPt)),
     fPhi(0), fM(0), fNEF(0), 
     fArea(0), fNch(0), fNn(0),
-    fMaxCPt(0), fMaxNPt(0)
+  fMaxCPt(0), fMaxNPt(0), fClusterIDs(new TArrayI()), fTrackIDs(new TArrayI())
 {    
   // Constructor.
 
@@ -28,7 +28,7 @@ AliEmcalJet::AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m) :
   fPt(pt), fEta(eta), fPhi(phi), 
   fM(m), fNEF(0), fArea(0), 
   fNch(0), fNn(0), 
-  fMaxCPt(0), fMaxNPt(0) 
+  fMaxCPt(0), fMaxNPt(0), fClusterIDs(new TArrayI()), fTrackIDs(new TArrayI())
 {
   // Constructor.
 
@@ -42,7 +42,7 @@ AliEmcalJet::AliEmcalJet(const AliEmcalJet &jet) :
   fPt(jet.fPt), fEta(jet.fEta), fPhi(jet.fPhi), 
   fM(jet.fM), fNEF(jet.fNEF), fArea(jet.fArea), 
   fNch(jet.fNch), fNn(jet.fNn),
-  fMaxCPt(jet.fMaxCPt), fMaxNPt(jet.fMaxNPt)
+  fMaxCPt(jet.fMaxCPt), fMaxNPt(jet.fMaxNPt), fClusterIDs(new TArrayI(*(jet.fClusterIDs))), fTrackIDs(new TArrayI(*(jet.fTrackIDs)))
 {
   // Constructor.
 }
index 6f2af1d..e10c56a 100644 (file)
@@ -6,12 +6,13 @@
 #include "AliVParticle.h"
 #include <TLorentzVector.h>
 #include <TMath.h>
+#include <TArrayI.h>
 
 class AliEmcalJet : public AliVParticle
 {
  public:
   AliEmcalJet() : AliVParticle(), fPt(0), fEta(0), fPhi(0), fM(0), fNEF(0), fArea(0), 
-                fNch(0), fNn(0), fMaxCPt(0), fMaxNPt(0) {;}
+    fNch(0), fNn(0), fMaxCPt(0), fMaxNPt(0), fClusterIDs(0), fTrackIDs(0) {;}
   AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m);
   AliEmcalJet(Double_t px, Double_t py, Double_t pz);
   AliEmcalJet(const AliEmcalJet &jet); 
@@ -52,6 +53,16 @@ class AliEmcalJet : public AliVParticle
   void        SetMaxTrackPt(Double32_t t)        { fMaxCPt = t;    }
   void        SetMaxClusterPt(Double32_t t)      { fMaxNPt = t;    }
 
+  void        SetNumberOfClusters(Int_t n)         { fClusterIDs->Set(n);           }
+  void        SetNumberOfTracks(Int_t n)           { fTrackIDs->Set(n);             }
+  void        AddClusterAt(Int_t clus, Int_t idx)  { fClusterIDs->AddAt(clus, idx); }
+  void        AddTrackAt(Int_t track, Int_t idx)   { fTrackIDs->AddAt(track, idx);  }
+
+  Int_t       GetNumberOfClusters()          const { return fClusterIDs->GetSize(); }
+  Int_t       GetNumberOfTracks()            const { return fTrackIDs->GetSize();   }
+  Int_t       ClusterAt(Int_t idx)           const { return fClusterIDs->At(idx);   }
+  Int_t       TrackAt(Int_t idx)             const { return fTrackIDs->At(idx);     }
+
  protected:
   Double32_t  fPt;           //[0,0,12]   pt 
   Double32_t  fEta;          //[-1,1,12]  eta
@@ -63,7 +74,9 @@ class AliEmcalJet : public AliVParticle
   UShort_t    fNn;           //           number of neutral constituents
   Double32_t  fMaxCPt;       //[0,0,12]   pt of maximum track
   Double32_t  fMaxNPt;       //[0,0,12]   pt of maximum cluster
+  TArrayI    *fClusterIDs;   //           array of cluster constituents  
+  TArrayI    *fTrackIDs;     //           array of track constituents    
 
-  ClassDef(AliEmcalJet,1) // ESD jet class in cylindrical coordinates
+  ClassDef(AliEmcalJet,2) // ESD jet class in cylindrical coordinates
 };
 #endif
index 9254902..5a7a8b2 100644 (file)
@@ -2,8 +2,6 @@ AliEmcalIsolatedPhotonsTask* AddTaskEmcalIsolatedPhotons(
                                                       const char *ntracks            = "Tracks",
                                                       const char *nclusters          = "CaloClusters",
                                                       const char *njets              = "Jets",
-                                                      const Bool_t skimmedESD        = 0,
-                                                      const Bool_t AODmode           = 0,
                                                       const Int_t AODtrackFilterBit  = 256  // hybrid LHC11h tracks
                                                        )
 {  
@@ -32,10 +30,7 @@ AliEmcalIsolatedPhotonsTask* AddTaskEmcalIsolatedPhotons(
   phTask->SetTracksName(ntracks);
   phTask->SetClusName(nclusters);
   phTask->SetJetsName(njets);
-  phTask->SetSkimmedESD(skimmedESD);
-  if (AODmode) {
-    phTask->SetAODFilterBit(AODtrackFilterBit); // global hybrids for LHC11h
-  }
+  phTask->SetAODFilterBit(AODtrackFilterBit); // global hybrids for LHC11h
 
   //-------------------------------------------------------
   // Final settings, pass to manager and set the containers
@@ -45,11 +40,13 @@ AliEmcalIsolatedPhotonsTask* AddTaskEmcalIsolatedPhotons(
   
   // Create containers for input/output
   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer()  ;
-  AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer() ;
-  
+
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("histosEMCALIsoPhoton_aiola", 
+                                                           TList::Class(),AliAnalysisManager::kOutputContainer,
+                                                           Form("%s", AliAnalysisManager::GetCommonFileName()));
   mgr->ConnectInput  (phTask, 0,  cinput1 );
-  mgr->ConnectOutput (phTask, 0, coutput1 );
-  
+  mgr->ConnectOutput (phTask, 1, coutput1 );
+
   return phTask;
   
 }
index c0b240a..ef63213 100644 (file)
@@ -19,6 +19,7 @@
 #pragma link C++ class AliEmcalSetupTask+;
 #pragma link C++ class AliEmcalTrackPropagatorTask+;
 #pragma link C++ class AliEmcalIsolatedPhotonsTask+;
+#pragma link C++ class AliEmcalAodTrackFilterTask+;
 #pragma link C++ class AliEsdSkimTask+;
 #pragma link C++ class AliEsdTrackExt+;
 #pragma link C++ class AliPicoTrack+;