From 6ea168d09a6232934aea68fdcdd05cfc24eeeb51 Mon Sep 17 00:00:00 2001 From: loizides Date: Tue, 3 Apr 2012 20:50:26 +0000 Subject: [PATCH] update from rosi --- PWGGA/EMCALJetTasks/AliEsdJetTask.cxx | 102 ++++++++++++++++---------- PWGGA/EMCALJetTasks/AliEsdJetTask.h | 26 ++++--- 2 files changed, 80 insertions(+), 48 deletions(-) diff --git a/PWGGA/EMCALJetTasks/AliEsdJetTask.cxx b/PWGGA/EMCALJetTasks/AliEsdJetTask.cxx index ba304d31e9a..beacf9a8e6d 100644 --- a/PWGGA/EMCALJetTasks/AliEsdJetTask.cxx +++ b/PWGGA/EMCALJetTasks/AliEsdJetTask.cxx @@ -1,16 +1,38 @@ // $Id$ #include "AliEsdJetTask.h" +#include #include +#include +#include +#include +#include #include -#include "AliESDJet.h" #include "AliAnalysisManager.h" +#include "AliCentrality.h" +#include "AliESDCaloCluster.h" +#include "AliESDJet.h" #include "AliESDtrack.h" #include "AliFJWrapper.h" -#include "AliESDCaloCluster.h" ClassImp(AliEsdJetTask) +//________________________________________________________________________ +AliEsdJetTask::AliEsdJetTask() : + AliAnalysisTaskSE("AliEsdJetTask"), + fTracksName("Tracks"), + fCaloName("CaloClusters"), + fJetsName("Jets"), + fAlgo(1), + fRadius(0.4), + fType(0), + fJets(0) +{ + // Default constructor. + + fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex."; +} + //________________________________________________________________________ AliEsdJetTask::AliEsdJetTask(const char *name) : AliAnalysisTaskSE("AliEsdJetTask"), @@ -20,7 +42,7 @@ AliEsdJetTask::AliEsdJetTask(const char *name) : fAlgo(1), fRadius(0.4), fType(0), - fHadCorr(0), + fMinJetTrackPt(0.15), fJets(0) { // Standard constructor. @@ -30,6 +52,9 @@ AliEsdJetTask::AliEsdJetTask(const char *name) : SetName(name); fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex."; + + DefineInput(0,TChain::Class()); + DefineOutput(1,TList::Class()); } //________________________________________________________________________ @@ -60,6 +85,12 @@ void AliEsdJetTask::UserExec(Option_t *) TClonesArray *tracks = 0; TClonesArray *clus = 0; TList *l = InputEvent()->GetList(); + + Float_t cent=100; + AliCentrality *centrality = dynamic_cast(l->FindObject("Centrality")); + if(centrality) + cent = centrality->GetCentralityPercentile("V0M"); + if ((fType==0)||(fType==1)) { if (fTracksName == "Tracks") am->LoadBranch("Tracks"); @@ -79,18 +110,17 @@ void AliEsdJetTask::UserExec(Option_t *) } } - FindJets(tracks, clus, fAlgo, fRadius); + FindJets(tracks, clus, fAlgo, fRadius, cent); } //________________________________________________________________________ void AliEsdJetTask::Terminate(Option_t *) { // Called once at the end of the analysis. - } //________________________________________________________________________ -void AliEsdJetTask::FindJets(TObjArray *tracks, TObjArray *clus, Int_t algo, Double_t radius) +void AliEsdJetTask::FindJets(TObjArray *tracks, TObjArray *clus, Int_t algo, Double_t radius, Float_t cent) { // Find jets. @@ -103,7 +133,7 @@ void AliEsdJetTask::FindJets(TObjArray *tracks, TObjArray *clus, Int_t algo, Dou AliFJWrapper fjw(name, name); fjw.SetR(radius); - fjw.SetAlgorithm(jalgo); + fjw.SetAlgorithm(jalgo); fjw.SetMaxRap(0.9); fjw.Clear(); @@ -113,68 +143,66 @@ void AliEsdJetTask::FindJets(TObjArray *tracks, TObjArray *clus, Int_t algo, Dou AliVTrack *t = static_cast(tracks->At(iTracks)); if (!t) continue; + if(t->Pt()Px(), t->Py(), t->Pz(), t->P(), iTracks); } } + if (clus) { Double_t vertex[3] = {0, 0, 0}; InputEvent()->GetPrimaryVertex()->GetXYZ(vertex); const Int_t Nclus = clus->GetEntries(); - for (Int_t iClus = 0, iN = 0; iClus < Nclus; ++iClus) { + for (Int_t iClus = 0, iN = 0, clusCount=0; iClus < Nclus; ++iClus) { AliVCluster *c = dynamic_cast(clus->At(iClus)); if (!c->IsEMCAL()) continue; TLorentzVector nPart; c->GetMomentum(nPart, vertex); Double_t energy = nPart.P(); - if (fHadCorr>0) { - Int_t imin = static_cast(c->GetEmcCpvDistance()); - if (imin>=0) { - Double_t dPhiMin = c->GetTrackDx(); - Double_t dEtaMin = c->GetTrackDz(); - if (dPhiMin<0.05 && dEtaMin<0.025) { // pp cuts!!! - AliVTrack *t = dynamic_cast(tracks->At(imin)); - if (t) { - energy -= fHadCorr*t->P(); - if (energy<0) - continue; - } - } - } + if(energy(c->GetEmcCpvDistance()); + if (imin>=0) { + Double_t dPhiMin = c->GetTrackDx(); + Double_t dEtaMin = c->GetTrackDz(); } - fjw.AddInputVector(nPart.Px(), nPart.Py(), nPart.Pz(), energy, -iN-1); + + fjw.AddInputVector(nPart.Px(), nPart.Py(), nPart.Pz(), energy, -iClus-1); } } // run jet finder fjw.Run(); - + std::vector jets_incl = fjw.GetInclusiveJets(); for(UInt_t ij=0, jetCount=0; ijSetArea(fjw.GetJetArea(ij)); -#if 0 /*tobedone*/ - jet->GetRefTracks()->Clear(); + Double_t vertex[3] = {0, 0, 0}; + InputEvent()->GetPrimaryVertex()->GetXYZ(vertex); vector constituents = fjw.GetJetConstituents(ij); - Double_t neutralE = 0; + Double_t neutralE = 0;Double_t maxTrack = 0;Double_t maxCluster=0; for(UInt_t ic=0; ic=0) - jet->AddTrack(tracks->At(uid)); - else { - TLorentzVector *nP = static_cast(fNeutrals->At(-(uid+1))); - neutralE += nP->E(); - jet->AddTrack(nP); + if (uid>=0){ + AliVTrack *t = static_cast(tracks->At(uid)); + if (t->Pt()>maxTrack) + maxTrack=t->Pt(); + } else { + AliVCluster *c = dynamic_cast(clus->At(-(uid+1))); + TLorentzVector nP; + c->GetMomentum(nP, vertex); + neutralE += nP.P(); + if (nP.P()>maxCluster) + maxCluster=nP.P(); } } + jet->SetMaxTrackPt(maxTrack); + jet->SetMaxClusterPt(maxCluster); jet->SetNEF(neutralE/jet->E()); -#endif - //jet->Print(""); jetCount++; } } - diff --git a/PWGGA/EMCALJetTasks/AliEsdJetTask.h b/PWGGA/EMCALJetTasks/AliEsdJetTask.h index 55cf8fb8290..b683b783f71 100644 --- a/PWGGA/EMCALJetTasks/AliEsdJetTask.h +++ b/PWGGA/EMCALJetTasks/AliEsdJetTask.h @@ -5,28 +5,32 @@ class TClonesArray; class AliESDtrackCuts; +class TList; +class TH1; +class TH2; #include "AliAnalysisTaskSE.h" class AliEsdJetTask : public AliAnalysisTaskSE { public: - AliEsdJetTask(const char *name=0); + AliEsdJetTask(const char *name); //was set to 0 + AliEsdJetTask();//=0); virtual ~AliEsdJetTask(); void UserCreateOutputObjects(); void UserExec(Option_t *option); void Terminate(Option_t *option); - void SetAlgo(Int_t a) { fAlgo = a; } - void SetClusName(const char *n) { fCaloName = n; } - void SetHadCorr(Double_t c) { fHadCorr = c; } - void SetJetsName(const char *n) { fJetsName = n; } - void SetTracksName(const char *n) { fTracksName = n; } - void SetRadius(Double_t r) { fRadius = r; } - void SetType(Int_t t) { fType = t; } + void SetAlgo(Int_t a) { fAlgo = a; } + void SetClusName(const char *n) { fCaloName = n; } + void SetJetsName(const char *n) { fJetsName = n; } + void SetMinJetTrackPt(Double_t min) { fMinJetTrackPt = min;} + void SetRadius(Double_t r) { fRadius = r; } + void SetTracksName(const char *n) { fTracksName = n; } + void SetType(Int_t t) { fType = t; } protected: - void FindJets(TObjArray *tracks, TObjArray *clus, Int_t algo, Double_t radius); + void FindJets(TObjArray *tracks, TObjArray *clus, Int_t algo, Double_t radius, Float_t fCent); TString fTracksName; // name of track collection TString fCaloName; // name of calo cluster collection @@ -34,13 +38,13 @@ class AliEsdJetTask : public AliAnalysisTaskSE { Int_t fAlgo; // algo (0==kt, 1==antikt) Double_t fRadius; // jet radius Int_t fType; // jet type (0=all, 1=ch, 2=neutral) - Double_t fHadCorr; // hadronic correction + Double_t fMinJetTrackPt; // min jet track momentum TClonesArray *fJets; //!jet collection private: AliEsdJetTask(const AliEsdJetTask&); // not implemented AliEsdJetTask &operator=(const AliEsdJetTask&); // not implemented - ClassDef(AliEsdJetTask, 1) // Jet producing task + ClassDef(AliEsdJetTask, 2) // Jet producing task }; #endif -- 2.39.3