]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/AliAnalysisTaskEmcalJet.cxx
up from salvatore
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliAnalysisTaskEmcalJet.cxx
index 1f9c01f0e75b71eed127fe48aaa34c6c2ca0f92b..5273a73220888c82253274db4b2ee981d83c4287 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: AliAnalysisTaskEmcalJet.cxx 56756 2012-05-30 05:03:02Z loizides $
+// $Id$
 //
 // Emcal jet analysis base task.
 //
@@ -33,7 +33,7 @@ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet() :
   fPtBiasJetTrack(0),
   fPtBiasJetClus(0),
   fJetPtCut(1),
-  fJetAreaCut(0.4),
+  fJetAreaCut(-1),
   fPercAreaCut(-1),
   fAreaEmcCut(0),
   fJetMinEta(-0.9),
@@ -42,6 +42,7 @@ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet() :
   fJetMaxPhi(10),
   fMaxClusterPt(100),
   fMaxTrackPt(100),
+  fLeadingHadronType(0),
   fJets(0),
   fRho(0),
   fRhoVal(0)
@@ -58,7 +59,7 @@ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet(const char *name, Bool_t histo)
   fPtBiasJetTrack(0),
   fPtBiasJetClus(0),
   fJetPtCut(1),
-  fJetAreaCut(0.4),
+  fJetAreaCut(-1),
   fPercAreaCut(-1),
   fAreaEmcCut(0),
   fJetMinEta(-0.9),
@@ -67,6 +68,7 @@ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet(const char *name, Bool_t histo)
   fJetMaxPhi(10),
   fMaxClusterPt(100),
   fMaxTrackPt(100),
+  fLeadingHadronType(0),
   fJets(0),
   fRho(0),
   fRhoVal(0)
@@ -85,10 +87,42 @@ Bool_t AliAnalysisTaskEmcalJet::AcceptBiasJet(AliEmcalJet *jet) const
 { 
   // Accept jet with a bias.
 
-  if (jet->MaxTrackPt() < fPtBiasJetTrack && jet->MaxClusterPt() < fPtBiasJetClus)
-    return kFALSE;
-  else
-    return kTRUE;
+  if (fLeadingHadronType == 0) {
+    if (jet->MaxTrackPt() < fPtBiasJetTrack) return kFALSE;
+  }
+  else if (fLeadingHadronType == 1) {
+    if (jet->MaxClusterPt() < fPtBiasJetClus) return kFALSE;
+  }
+  else {
+    if (jet->MaxTrackPt() < fPtBiasJetTrack && jet->MaxClusterPt() < fPtBiasJetClus) return kFALSE;
+  }
+
+  return kTRUE;
+}
+
+//________________________________________________________________________
+Float_t* AliAnalysisTaskEmcalJet::GenerateFixedBinArray(Int_t n, Float_t min, Float_t max) const
+{
+  Float_t *bins = new Float_t[n+1];
+
+  Float_t binWidth = (max-min)/n;
+  bins[0] = min;
+  for (Int_t i = 1; i <= n; i++) {
+    bins[i] = bins[i-1]+binWidth;
+  }
+
+  return bins;
+}
+
+//________________________________________________________________________
+Double_t AliAnalysisTaskEmcalJet::GetLeadingHadronPt(AliEmcalJet *jet) const
+{
+  if (fLeadingHadronType == 0)       // charged leading hadron
+    return jet->MaxTrackPt();
+  else if (fLeadingHadronType == 1)  // neutral leading hadron
+    return jet->MaxClusterPt();
+  else                               // charged or neutral
+    return jet->MaxPartPt();
 }
 
 //________________________________________________________________________
@@ -107,7 +141,13 @@ Bool_t AliAnalysisTaskEmcalJet::AcceptJet(AliEmcalJet *jet) const
   if (jet->MaxTrackPt() > fMaxTrackPt || jet->MaxClusterPt() > fMaxClusterPt)
     return kFALSE;
 
-  return (Bool_t)(jet->Eta() > fJetMinEta && jet->Eta() < fJetMaxEta && jet->Phi() > fJetMinPhi && jet->Phi() < fJetMaxPhi);
+  Double_t jetPhi = jet->Phi();
+  Double_t jetEta = jet->Eta();
+  
+  if (fJetMinPhi < 0) // if limits are given in (-pi, pi) range
+    jetPhi -= TMath::Pi() * 2;
+
+  return (Bool_t)(jetEta > fJetMinEta && jetEta < fJetMaxEta && jetPhi > fJetMinPhi && jetPhi < fJetMaxPhi);
 }
 
 //________________________________________________________________________
@@ -139,6 +179,8 @@ void AliAnalysisTaskEmcalJet::ExecOnce()
       AliInfo(Form("%s: jet area cut will be calculated as a percentage of the average area, given value will be overwritten", GetName()));
     fJetAreaCut = fPercAreaCut * fJetRadius * fJetRadius * TMath::Pi();
   }
+  if (fJetAreaCut < 0)
+    fJetAreaCut = 0;
 
   if (fAnaType == kTPC) {
     SetJetEtaLimits(-0.5, 0.5);
@@ -187,7 +229,10 @@ Int_t* AliAnalysisTaskEmcalJet::GetSortedArray(TClonesArray *array) const
 
   const Int_t n = array->GetEntriesFast();
 
-  if (fJets->GetClass()->GetBaseClass("AliEmcalJet")) {
+  if (n < 1)
+    return 0;
+
+  if (array->GetClass()->GetBaseClass("AliEmcalJet")) {
 
     for (Int_t i = 0; i < n; i++) {
 
@@ -207,7 +252,7 @@ Int_t* AliAnalysisTaskEmcalJet::GetSortedArray(TClonesArray *array) const
     }
   }
 
-  else if (fJets->GetClass()->GetBaseClass("AliVTrack")) {
+  else if (array->GetClass()->GetBaseClass("AliVTrack")) {
 
     for (Int_t i = 0; i < n; i++) {
 
@@ -227,7 +272,7 @@ Int_t* AliAnalysisTaskEmcalJet::GetSortedArray(TClonesArray *array) const
     }
   }
 
-  else if (fJets->GetClass()->GetBaseClass("AliVCluster")) {
+  else if (array->GetClass()->GetBaseClass("AliVCluster")) {
 
     for (Int_t i = 0; i < n; i++) {