]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/AliAnalysisTaskEmcalJetSample.cxx
update histos
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliAnalysisTaskEmcalJetSample.cxx
index 075bf5e8ff4f20344aa7c426e3cfae823287b856..8d91f5d13d5312037d8affcecc7610130f34da40 100644 (file)
@@ -7,11 +7,13 @@
 #include <TClonesArray.h>
 #include <TH1F.h>
 #include <TH2F.h>
+#include <TH3F.h>
 #include <TList.h>
 #include <TLorentzVector.h>
 
 #include "AliVCluster.h"
 #include "AliAODCaloCluster.h"
+#include "AliESDCaloCluster.h"
 #include "AliVTrack.h"
 #include "AliEmcalJet.h"
 #include "AliRhoParameter.h"
@@ -19,6 +21,7 @@
 #include "AliJetContainer.h"
 #include "AliParticleContainer.h"
 #include "AliClusterContainer.h"
+#include "AliPicoTrack.h"
 
 #include "AliAnalysisTaskEmcalJetSample.h"
 
@@ -34,6 +37,8 @@ AliAnalysisTaskEmcalJetSample::AliAnalysisTaskEmcalJetSample() :
   fHistJetsPtArea(0),
   fHistJetsPtLeadHad(0),
   fHistJetsCorrPtArea(0),
+  fHistPtDEtaDPhiTrackClus(0),
+  fHistPtDEtaDPhiClusTrack(0),
   fJetsCont(0),
   fTracksCont(0),
   fCaloClustersCont(0)
@@ -72,6 +77,8 @@ AliAnalysisTaskEmcalJetSample::AliAnalysisTaskEmcalJetSample(const char *name) :
   fHistJetsPtArea(0),
   fHistJetsPtLeadHad(0),
   fHistJetsCorrPtArea(0),
+  fHistPtDEtaDPhiTrackClus(0),
+  fHistPtDEtaDPhiClusTrack(0),
   fJetsCont(0),
   fTracksCont(0),
   fCaloClustersCont(0)
@@ -121,7 +128,7 @@ void AliAnalysisTaskEmcalJetSample::UserCreateOutputObjects()
     fCaloClustersCont = GetClusterContainer(0);
   }
   fTracksCont->SetClassName("AliVTrack");
-  fCaloClustersCont->SetClassName("AliAODCaloCluster");
+  fCaloClustersCont->SetClassName("AliVCluster");
 
   TString histname;
 
@@ -184,6 +191,15 @@ void AliAnalysisTaskEmcalJetSample::UserCreateOutputObjects()
       }
     }
   }
+
+  histname = "fHistPtDEtaDPhiTrackClus";
+  fHistPtDEtaDPhiTrackClus = new TH3F(histname.Data(),Form("%s;#it{p}_{T}^{track};#Delta#eta;#Delta#varphi",histname.Data()),100,0.,100.,100,-0.1,0.1,100,-0.1,0.1);
+  fOutput->Add(fHistPtDEtaDPhiTrackClus);
+
+  histname = "fHistPtDEtaDPhiClusTrack";
+  fHistPtDEtaDPhiClusTrack = new TH3F(histname.Data(),Form("%s;#it{p}_{T}^{clus};#Delta#eta;#Delta#varphi",histname.Data()),100,0.,100.,100,-0.1,0.1,100,-0.1,0.1);
+  fOutput->Add(fHistPtDEtaDPhiClusTrack);
+
   PostData(1, fOutput); // Post data for ALL output slots > 0 here.
 }
 
@@ -196,27 +212,18 @@ Bool_t AliAnalysisTaskEmcalJetSample::FillHistograms()
     AliVTrack *track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle(0)); 
     while(track) {
       fHistTracksPt[fCentBin]->Fill(track->Pt()); 
-      Int_t emc1 = track->GetEMCALcluster();
-      Printf("EMCAL cluster %d",emc1);
       track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle());
     }
   }
   
   if (fCaloClustersCont) {
-    //    AliVCluster *cluster = fCaloClustersCont->GetNextAcceptCluster(0); 
-    AliAODCaloCluster *cluster = static_cast<AliAODCaloCluster*>(fCaloClustersCont->GetNextAcceptCluster(0));
+    AliVCluster *cluster = fCaloClustersCont->GetNextAcceptCluster(0); 
     while(cluster) {
-
       TLorentzVector nPart;
       cluster->GetMomentum(nPart, fVertex);
       fHistClustersPt[fCentBin]->Fill(nPart.Pt());
-      
-      AliVTrack *mt = NULL;
-      Printf("N matched tracks: %d",cluster->GetNTracksMatched());
-      if(cluster->GetNTracksMatched()>1)
-       mt = static_cast<AliVTrack*>(cluster->GetTrackMatched(0));
-      if(mt) Printf("matched track pt: %f eta: %f phi: %f",mt->Pt(),mt->Eta(),mt->Phi());
-      cluster = static_cast<AliAODCaloCluster*>(fCaloClustersCont->GetNextAcceptCluster());
+
+      cluster = fCaloClustersCont->GetNextAcceptCluster();
     }
   }
 
@@ -230,9 +237,10 @@ Bool_t AliAnalysisTaskEmcalJetSample::FillHistograms()
       Float_t ptLeading = fJetsCont->GetLeadingHadronPt(jet);
       fHistJetsPtLeadHad[fCentBin]->Fill(jet->Pt(), ptLeading);
 
-      Float_t corrPt = jet->Pt() - fJetsCont->GetRhoVal() * jet->Area();
-      fHistJetsCorrPtArea[fCentBin]->Fill(corrPt, jet->Area());
-      
+      if (fHistJetsCorrPtArea[fCentBin]) {
+       Float_t corrPt = jet->Pt() - fJetsCont->GetRhoVal() * jet->Area();
+       fHistJetsCorrPtArea[fCentBin]->Fill(corrPt, jet->Area());
+      }
       jet = fJetsCont->GetNextAcceptJet(); 
     }
     
@@ -240,9 +248,75 @@ Bool_t AliAnalysisTaskEmcalJetSample::FillHistograms()
     if(jet) fHistLeadingJetPt[fCentBin]->Fill(jet->Pt());
   }
 
+  CheckClusTrackMatching();
+
   return kTRUE;
 }
 
+//________________________________________________________________________
+void AliAnalysisTaskEmcalJetSample::CheckClusTrackMatching()
+{
+  
+  if(!fTracksCont || !fCaloClustersCont)
+    return;
+
+  Double_t deta = 999;
+  Double_t dphi = 999;
+
+  //Get closest cluster to track
+  AliVTrack *track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle(0)); 
+  while(track) {
+    //Get matched cluster
+    Int_t emc1 = track->GetEMCALcluster();
+    if(fCaloClustersCont && emc1>=0) {
+      AliVCluster *clusMatch = fCaloClustersCont->GetCluster(emc1);
+      if(clusMatch) {
+       AliPicoTrack::GetEtaPhiDiff(track, clusMatch, dphi, deta);
+       fHistPtDEtaDPhiTrackClus->Fill(track->Pt(),deta,dphi);
+      }
+    }
+    track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle());
+  }
+  
+  //Get closest track to cluster
+  AliVCluster *cluster = fCaloClustersCont->GetNextAcceptCluster(0); 
+  while(cluster) {
+    TLorentzVector nPart;
+    cluster->GetMomentum(nPart, fVertex);
+    fHistClustersPt[fCentBin]->Fill(nPart.Pt());
+    
+    //Get matched track
+    AliVTrack *mt = NULL;      
+    AliAODCaloCluster *acl = dynamic_cast<AliAODCaloCluster*>(cluster);
+    if(acl) {
+      if(acl->GetNTracksMatched()>1)
+       mt = static_cast<AliVTrack*>(acl->GetTrackMatched(0));
+    }
+    else {
+      AliESDCaloCluster *ecl = dynamic_cast<AliESDCaloCluster*>(cluster);
+      Int_t im = ecl->GetTrackMatchedIndex();
+      if(fTracksCont && im>=0) {
+       mt = static_cast<AliVTrack*>(fTracksCont->GetParticle(im));
+      }
+    }
+    if(mt) {
+      AliPicoTrack::GetEtaPhiDiff(mt, cluster, dphi, deta);
+      fHistPtDEtaDPhiClusTrack->Fill(nPart.Pt(),deta,dphi);
+      
+      /* //debugging
+        if(mt->IsEMCAL()) {
+        Int_t emc1 = mt->GetEMCALcluster();
+        Printf("current id: %d  emc1: %d",fCaloClustersCont->GetCurrentID(),emc1);
+        AliVCluster *clm = fCaloClustersCont->GetCluster(emc1);
+        AliPicoTrack::GetEtaPhiDiff(mt, clm, dphi, deta);
+        Printf("deta: %f dphi: %f",deta,dphi);
+        }
+      */
+    }
+    cluster = fCaloClustersCont->GetNextAcceptCluster();
+  }
+}
+
 //________________________________________________________________________
 void AliAnalysisTaskEmcalJetSample::ExecOnce() {