]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
had corr qa task from Rosi
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Mar 2013 13:55:54 +0000 (13:55 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Mar 2013 13:55:54 +0000 (13:55 +0000)
PWGJE/CMakelibPWGJEEMCALJetTasks.pkg
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskChargedJetsPA.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.cxx [new file with mode: 0644]
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.h [new file with mode: 0644]
PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetHadCorQA.C [new file with mode: 0644]
PWGJE/PWGJEEMCALJetTasksLinkDef.h

index 5ac452b1cb03301bd3ecf4d7443eb65b2a1218fd..4944378669ee313f61f70fa2baeb888171c6f1e7 100644 (file)
 #--------------------------------------------------------------------------------#
 
 set ( SRCS 
+ EMCALJetTasks/AliAnalysisTaskDeltaPt.cxx
  EMCALJetTasks/AliAnalysisTaskEmcalJet.cxx
  EMCALJetTasks/AliAnalysisTaskEmcalJetSample.cxx
- EMCALJetTasks/AliAnalysisTaskRhoBase.cxx
  EMCALJetTasks/AliAnalysisTaskRho.cxx
- EMCALJetTasks/AliAnalysisTaskRhoFlow.cxx
  EMCALJetTasks/AliAnalysisTaskRhoAverage.cxx
- EMCALJetTasks/AliAnalysisTaskDeltaPt.cxx
+ EMCALJetTasks/AliAnalysisTaskRhoBase.cxx
+ EMCALJetTasks/AliAnalysisTaskRhoFlow.cxx
  EMCALJetTasks/AliAnalysisTaskScale.cxx
  EMCALJetTasks/AliEmcalJet.cxx
  EMCALJetTasks/AliEmcalJetTask.cxx
  EMCALJetTasks/AliHadCorrTask.cxx
- EMCALJetTasks/AliJetEmbeddingTask.cxx
- EMCALJetTasks/AliJetEmbeddingFromGenTask.cxx
+ EMCALJetTasks/AliJetConstituentTagCopier.cxx
  EMCALJetTasks/AliJetEmbeddingFromAODTask.cxx
+ EMCALJetTasks/AliJetEmbeddingFromGenTask.cxx
  EMCALJetTasks/AliJetEmbeddingFromPYTHIATask.cxx
+ EMCALJetTasks/AliJetEmbeddingTask.cxx
  EMCALJetTasks/AliJetModelBaseTask.cxx
  EMCALJetTasks/AliJetRandomizerTask.cxx
- EMCALJetTasks/AliJetConstituentTagCopier.cxx
  EMCALJetTasks/AliJetResponseMaker.cxx
  EMCALJetTasks/AliRhoParameter.cxx
- EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHMEC.cxx
- EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetSpectra.cxx
- EMCALJetTasks/UserTasks/AliAnalysisTaskSAJF.cxx
- EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.cxx
  EMCALJetTasks/UserTasks/AliAnalysisTaskCLQA.cxx
- EMCALJetTasks/UserTasks/AliAnalysisTaskSOH.cxx
- EMCALJetTasks/UserTasks/AliAnalysisTaskFullppJet.cxx
  EMCALJetTasks/UserTasks/AliAnalysisTaskChargedJetsPA.cxx
- EMCALJetTasks/UserTasks/AliAnalysisTaskFullpAJets.cxx
+ EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHMEC.cxx
+ EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.cxx
+ EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetSpectra.cxx
  EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetSpectraMECpA.cxx
+ EMCALJetTasks/UserTasks/AliAnalysisTaskFullpAJets.cxx
+ EMCALJetTasks/UserTasks/AliAnalysisTaskFullppJet.cxx
  EMCALJetTasks/UserTasks/AliAnalysisTaskQualityAssurancePA.cxx
  EMCALJetTasks/UserTasks/AliAnalysisTaskRhoVnModulation.cxx
+ EMCALJetTasks/UserTasks/AliAnalysisTaskSAJF.cxx
+ EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.cxx
+ EMCALJetTasks/UserTasks/AliAnalysisTaskSOH.cxx
 )
 
 set ( DHDR  PWGJEEMCALJetTasksLinkDef.h)
index a7a1f7ccd129398899d8ac1cbb94ea248ffc5b32..2001a8d75ed590a91a3d418b5fdacfdbee7e71ef 100644 (file)
@@ -8,6 +8,7 @@ class TH2F;
 class TList;
 class TClonesArray;
 class TString;
+class TRandom3;
 class AliEmcalJet;
 class AliRhoParameter;
 class AliVParticle;
diff --git a/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.cxx b/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.cxx
new file mode 100644 (file)
index 0000000..a75dec8
--- /dev/null
@@ -0,0 +1,316 @@
+#include "AliAnalysisTaskEmcalJetHadCorQA.h"
+
+#include <TCanvas.h>
+#include <TChain.h>
+#include <TClonesArray.h>
+#include <TH1F.h>
+#include <TH2F.h>
+#include <TH3F.h>
+#include <THnSparse.h>
+#include <TList.h>
+#include <TLorentzVector.h>
+#include <TParameter.h>
+#include <TParticle.h>
+#include <TTree.h>
+#include <TVector3.h>
+
+#include "AliAODEvent.h"
+#include "AliAnalysisManager.h"
+#include "AliAnalysisTask.h"
+#include "AliCentrality.h"
+#include "AliESDEvent.h"
+#include "AliESDInputHandler.h"
+#include "AliEmcalJet.h"
+#include "AliVCluster.h"
+#include "AliVTrack.h"
+#include "AliRhoParameter.h"
+#include "AliEmcalParticle.h"
+#include "AliPicoTrack.h"
+#include "AliEMCALGeometry.h"
+
+ClassImp(AliAnalysisTaskEmcalJetHadCorQA)
+
+//________________________________________________________________________
+AliAnalysisTaskEmcalJetHadCorQA::AliAnalysisTaskEmcalJetHadCorQA() : 
+  AliAnalysisTaskEmcalJet("spectra",kFALSE), 
+  fCalo2Name(),
+  fCaloClusters2(),
+  fHistRhovsCent(0),
+  fHistNjetvsCent(0)
+{
+  for (int i = 0;i<3;i++){
+  fHistNEFvsPt[i] = 0;
+  fHistNTMatchvsPt[i] = 0;  
+  fHistNCMatchvsPt[i] = 0;
+  fHistHadCorvsPt[i] = 0;
+  fHistNEFvsPtBias[i] = 0;
+  fHistNTMatchvsPtBias[i] = 0;  
+  fHistNCMatchvsPtBias[i] = 0;
+  fHistHadCorvsPtBias[i] = 0;
+  }
+  // Default constructor.
+  SetMakeGeneralHistograms(kTRUE);
+}
+
+//________________________________________________________________________
+AliAnalysisTaskEmcalJetHadCorQA::AliAnalysisTaskEmcalJetHadCorQA(const char *name) :
+  AliAnalysisTaskEmcalJet(name,kTRUE),
+  fCalo2Name(),
+  fCaloClusters2(),
+  fHistRhovsCent(0),
+  fHistNjetvsCent(0)
+ { 
+  for (int i = 0;i<3;i++){
+  fHistNEFvsPt[i] = 0;
+  fHistNTMatchvsPt[i] = 0;  
+  fHistNCMatchvsPt[i] = 0;
+  fHistHadCorvsPt[i] = 0;
+  fHistNEFvsPtBias[i] = 0;
+  fHistNTMatchvsPtBias[i] = 0;  
+  fHistNCMatchvsPtBias[i] = 0;
+  fHistHadCorvsPtBias[i] = 0;
+  }
+   SetMakeGeneralHistograms(kTRUE);
+ }
+
+//________________________________________________________________________
+void AliAnalysisTaskEmcalJetHadCorQA::UserCreateOutputObjects()
+{
+  if (! fCreateHisto)
+    return;
+  AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
+  fHistRhovsCent             = new TH2F("RhovsCent",              "RhovsCent",             100, 0.0, 100.0, 500, 0, 500);
+  fHistNjetvsCent            = new TH2F("NjetvsCent",             "NjetvsCent",            100, 0.0, 100.0, 100, 0, 100);
+
+  for (int i = 0;i<3;i++){
+    char name[200];
+    TString title;
+    sprintf(name,"NEFvsPt%i",i);
+    fHistNEFvsPt[i]         = new TH2F(name, name, 100,0,1,500,-250,250);
+    fOutput->Add(fHistNEFvsPt[i]);
+    sprintf(name,"NTMatchvsPt%i",i);
+    fHistNTMatchvsPt[i]     = new TH2F(name, name, 100,0,100,500,-250,250);  
+    fOutput->Add(fHistNTMatchvsPt[i]);
+    sprintf(name,"NCMatchvsPt%i",i);
+    fHistNCMatchvsPt[i]     = new TH2F(name, name, 100,0,100,500,-250,250);
+    fOutput->Add(fHistNCMatchvsPt[i]);
+    sprintf(name,"HadCorvsPt%i",i);
+    fHistHadCorvsPt[i]      = new TH2F(name, name, 1000,0,500,500,-250,250);
+    fOutput->Add(fHistHadCorvsPt[i]);
+    sprintf(name,"NEFvsPtBias%i",i);
+    fHistNEFvsPtBias[i]     = new TH2F(name, name, 100,0,1,500,-250,250);
+    fOutput->Add(fHistNEFvsPtBias[i]);
+    sprintf(name,"NTMatchvsPtBias%i",i);
+    fHistNTMatchvsPtBias[i] = new TH2F(name, name, 100,0,100,500,-250,250);  
+    fOutput->Add(fHistNTMatchvsPtBias[i]);
+    sprintf(name,"NCMatchvsPtBias%i",i);
+    fHistNCMatchvsPtBias[i] = new TH2F(name, name, 100,0,100,500,-250,250);
+    fOutput->Add(fHistNCMatchvsPtBias[i]);
+    sprintf(name,"HadCorvsPtBias%i",i);
+    fHistHadCorvsPtBias[i]  = new TH2F(name, name, 1000,0,500,500,-250,250);
+    fOutput->Add(fHistHadCorvsPtBias[i]);
+  }
+  fHistNTMatchvsPtvsNtack0   = new TH3F("NTMmatchvsPtvsNtrack0",  "NTMatchsvsPtvsNtrack0", 100,0,100,500,-250,250,250,0,2500);
+
+  // for (Int_t i = 0;i<6;++i){
+  //   name = TString(Form("JetPtvsTrackPt_%i",i));
+  //   title = TString(Form("Jet pT vs Leading Track pT cent bin %i",i));
+  //   fHistJetPtvsTrackPt[i] = new TH2F(name,title,1000,-500,500,100,0,100);
+  //   fOutput->Add(fHistJetPtvsTrackPt[i]);
+   
+  // }
+  fOutput->Add(fHistRhovsCent);
+  fOutput->Add(fHistNjetvsCent);
+  fOutput->Add(fHistNTMatchvsPtvsNtack0);
+   PostData(1, fOutput);
+}
+
+//________________________________________________________________________
+
+Int_t AliAnalysisTaskEmcalJetHadCorQA::GetCentBin(Double_t cent) const 
+{
+  // Get centrality bin.
+
+  Int_t centbin = -1;
+  if (cent>=0 && cent<10)
+    centbin = 0;
+  else if (cent>=10 && cent<30)
+    centbin = 1;
+  else if (cent>=30 && cent<50)
+    centbin = 2;
+  else if (cent>50)
+    centbin =3;
+  return centbin;
+}
+
+//________________________________________________________________________
+
+Float_t AliAnalysisTaskEmcalJetHadCorQA:: RelativePhi(Double_t mphi,Double_t vphi) const
+{
+  if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
+  else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
+  if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
+  else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
+  double dphi = mphi-vphi;
+  if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
+  else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
+
+  return dphi;//dphi in [-Pi, Pi]                                                                                                    
+}
+
+//________________________________________________________________________
+void AliAnalysisTaskEmcalJetHadCorQA::ExecOnce(){
+  AliAnalysisTaskEmcalJet::ExecOnce();
+
+//   AliAnalysisManger *am = AliAnalysisManager::GetAnalysisManger();
+//   if (fCaloName == "CaloClusters")
+//     am->LoadBranch("CaloClusters");
+
+  if (!fCalo2Name.IsNull() && !fCaloClusters2){
+    fCaloClusters2 = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fCalo2Name));
+    if (!fCaloClusters2){
+      AliError(Form("%s: Could not retrieve calo clusters %s!",GetName(),fCalo2Name.Data()));
+      fInitialized = kFALSE;
+      return;
+    }
+    //  fCaloClusters2(),
+ //    else if (!fJets->GetClass()->GetBaseClass("AliVCluster")){
+//       AliError(Form("%s: Collection %s does not contain AliEmcalParticle objects!",GetName(),fCalo2Name.Data()));
+//       fCaloClusters2 = 0;
+//       fInitialized = kFALSE;
+//       return;
+    //  }
+  }
+}
+
+
+//________________________________________________________________________
+Bool_t AliAnalysisTaskEmcalJetHadCorQA::Run()
+{  
+  Int_t centbin = GetCentBin(fCent);
+  //for pp analyses we will just use the first centrality bin
+  if (centbin == -1)
+    centbin = 0;
+  if (centbin>2)
+    return kTRUE;
+  if (!fTracks)
+    return kTRUE;
+
+  const Int_t nCluster = fCaloClusters->GetEntriesFast();
+  const Int_t nCluster2 = fCaloClusters2->GetEntriesFast();
+  const Int_t nTrack = fTracks->GetEntriesFast();
+
+  TString fRhoScaledName = fRhoName;
+  fRho = GetRhoFromEvent(fRhoScaledName);
+  fRhoVal = fRho->GetVal();
+  fHistRhovsCent->Fill(fCent,fRhoVal);
+  const Int_t Njets = fJets->GetEntriesFast();
+
+  Int_t NjetAcc = 0;
+
+  for (Int_t iJets = 0; iJets < Njets; ++iJets) {
+    Int_t TrackMatch = 0;
+     AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(iJets));
+     if (!jet)
+       continue; 
+     if (jet->Area()==0)
+       continue;
+     if (jet->Pt()<0.1)
+       continue;
+     if (jet->MaxTrackPt()>100)
+       continue;
+     if (! AcceptJet(jet))
+       continue;
+     NjetAcc++;
+     vector<Int_t> cluster_id; //we need to keep track of the jet clusters that we find
+     vector<Int_t> cluster_id2;
+     Double_t Esub = 0; //total E subtracted from the jet
+     Double_t jetPt = -500;
+     jetPt = jet->Pt()-jet->Area()*fRhoVal;    
+     for (int i = 0;i<nTrack;i++){
+       AliEmcalParticle *emctrack = static_cast<AliEmcalParticle*>(fTracks->At(i));
+       if (!emctrack)
+        continue;
+       if (!emctrack->IsEMCAL())
+        continue;
+       AliVTrack *track = (AliVTrack*)emctrack->GetTrack();
+       if (! track)
+        continue;
+       if (! AcceptTrack(track))
+        continue;
+       if (! IsJetTrack(jet,i,false))
+        continue;
+       Int_t iClus = track->GetEMCALcluster();
+       if (iClus<0)
+        continue;
+       bool ischecked = false;
+       for (Int_t icid = 0;i<cluster_id.size();icid++)
+        if (cluster_id[icid] == iClus)
+          ischecked = true; // we've already looked at this uncorrected cluster
+       if (ischecked)
+        continue; //no need to go further
+       AliEmcalParticle *emcluster = static_cast<AliEmcalParticle*>(fCaloClusters->At(iClus));
+       AliVCluster *cluster = emcluster->GetCluster();
+       if (! cluster)
+        continue;
+       if (! AcceptCluster(cluster))
+        continue;
+       Double_t etadiff = 999;
+       Double_t phidiff = 999;
+       AliPicoTrack::GetEtaPhiDiff(track,cluster,phidiff,etadiff);
+       if (! (TMath::Abs(phidiff)< 0.025&&TMath::Abs(etadiff)<0.015))
+        continue;
+       TrackMatch++; //this cluster has been matched, let's add it to the list
+       cluster_id.push_back(iClus);
+       Int_t ismatch = -1;
+       //now we need to find its matched corrected cluster if any
+       for (Int_t ic = 0;ic < nCluster2;ic++){
+        //we don't need to check the list of corrected clusters because 1 to 1 between corrected and uncorrected
+        AliVCluster *emcluster2 = static_cast<AliVCluster*>(fCaloClusters2->At(ic));
+        if (! emcluster2)
+          continue;
+        if (! AcceptCluster(emcluster2))
+          continue;
+        if (! IsJetCluster(jet,ic,false))
+          continue;
+        TLorentzVector nPart;
+        cluster->GetMomentum(nPart,const_cast<Double_t*>(fVertex));
+        TLorentzVector nPart2;
+        emcluster2->GetMomentum(nPart2,const_cast<Double_t*>(fVertex));
+        float R = pow(pow(nPart.Eta()-nPart2.Eta(),2)+pow(nPart.Phi()-nPart2.Phi(),2),0.5);
+        if (R < 0.001){//this cluster stayed in the jet!
+          cluster_id2.push_back(ic);
+          ismatch = ic;
+        }
+       } // end of cluster2 loop
+       //we only get here if the track was matched to a cluster that hadn't been looked at before
+       if (ismatch < 0) //this cluster was entirely deleted
+        Esub+=cluster->E();
+       else{ //get the corrected cluster
+        AliVCluster *emcluster2temp = static_cast<AliVCluster*>(fCaloClusters2->At(ismatch));
+        Esub+=(cluster->E() - emcluster2temp->E());
+       }
+       
+     } // end of track loop
+     fHistNEFvsPt[centbin]->Fill(jet->NEF(),jetPt);
+     fHistNTMatchvsPt[centbin]->Fill(TrackMatch,jetPt);
+     //        fHistNCMatchvsPtvsCent(0),
+     fHistHadCorvsPt[centbin]->Fill(Esub,jetPt);
+     if (jet->MaxTrackPt()<5.0)
+       continue;
+     fHistNEFvsPtBias[centbin]->Fill(jet->NEF(),jetPt);
+     fHistNTMatchvsPtBias[centbin]->Fill(TrackMatch,jetPt);
+     fHistHadCorvsPtBias[centbin]->Fill(Esub,jetPt);
+     if (centbin == 0)
+       fHistNTMatchvsPtvsNtack0->Fill(TrackMatch,jetPt,nTrack);
+  }
+  fHistNjetvsCent->Fill(fCent,NjetAcc);
+  return kTRUE;
+}      
+
+
+
+
+
diff --git a/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.h b/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.h
new file mode 100644 (file)
index 0000000..9aa9354
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef AliAnalysisTaskEmcalJetHadCorQA_h
+#define AliAnalysisTaskEmcalJetHadCorQA_h
+
+class TH1F;
+class TH2F;
+class TH3F;
+class THnSparse;
+
+#include "AliAnalysisTaskEmcalJet.h"
+
+class AliAnalysisTaskEmcalJetHadCorQA : public AliAnalysisTaskEmcalJet {
+ public:
+  AliAnalysisTaskEmcalJetHadCorQA();
+  AliAnalysisTaskEmcalJetHadCorQA(const char *name);
+  virtual ~AliAnalysisTaskEmcalJetHadCorQA() {}
+  
+  
+  virtual void           UserCreateOutputObjects();
+  void                   SetCalo2Name(const char *n) {fCalo2Name = n;}
+
+ protected:
+  Bool_t                 Run();
+  void                   ExecOnce();
+  virtual Int_t          GetCentBin(Double_t cent) const;
+  Float_t                RelativePhi(Double_t mphi,Double_t vphi) const;
+
+ private:
+  TString             fCalo2Name;
+  TClonesArray       *fCaloClusters2;
+  TH2F                  *fHistRhovsCent;           //!rho vs cent
+  TH2F                  *fHistNjetvsCent;          //!number of jets versus Centrality
+  TH2F               *fHistNEFvsPt[3];      //!
+  TH2F               *fHistNTMatchvsPt[3];      //!  
+  TH2F               *fHistNCMatchvsPt[3];      //!
+  TH2F               *fHistHadCorvsPt[3];      //!
+  TH2F               *fHistNEFvsPtBias[3];      //!
+  TH2F               *fHistNTMatchvsPtBias[3];      //!  
+  TH2F               *fHistNCMatchvsPtBias[3];      //!
+  TH2F               *fHistHadCorvsPtBias[3];      //!
+  TH3F               *fHistNTMatchvsPtvsNtack0;      //!
+
+
+  AliAnalysisTaskEmcalJetHadCorQA(const AliAnalysisTaskEmcalJetHadCorQA&); // not implemented
+  AliAnalysisTaskEmcalJetHadCorQA& operator=(const AliAnalysisTaskEmcalJetHadCorQA&); // not implemented
+  
+  ClassDef(AliAnalysisTaskEmcalJetHadCorQA, 1); // Emcal jet spectra task
+};
+#endif
diff --git a/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetHadCorQA.C b/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetHadCorQA.C
new file mode 100644 (file)
index 0000000..38cd7aa
--- /dev/null
@@ -0,0 +1,67 @@
+
+
+AliAnalysisTaskEmcalJetHadCorQA* AddTaskEmcalJetHadCorQA(
+   const char *outfilename    = "AnalysisOutput.root",
+   const char *nJets          = "Jets",
+   UInt_t type                = AliAnalysisTaskEmcal::kTPC,
+   const char *nRhosChEm      = "rhoChEm",
+   const Double_t minPhi      = 1.8,
+   const Double_t maxPhi      = 2.74,
+   const Double_t minEta      = -0.3,
+   const Double_t maxEta      = 0.3,
+   const Double_t minArea     = 0.4,
+   const char *nTracks        = "PicoTracks",
+   const char *nClusters      = "CaloClusters",
+   const char *nClustersCorr  = "CaloClusters"
+)
+{  
+  // Get the pointer to the existing analysis manager via the static access method.
+  //==============================================================================
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  if (!mgr)
+  {
+    ::Error("AddTaskEmcalJetHadCorQA", "No analysis manager to connect to.");
+    return NULL;
+  }  
+  
+  // Check the analysis type using the event handlers connected to the analysis manager.
+  //==============================================================================
+  if (!mgr->GetInputEventHandler())
+  {
+    ::Error("AddTaskEmcalJetHadCorQA", "This task requires an input event handler");
+    return NULL;
+  }
+  
+  //-------------------------------------------------------
+  // Init the task and do settings
+  //-------------------------------------------------------
+
+  TString name(Form("JetHadCor_%s", nJets));
+  AliAnalysisTaskEmcalJetHadCorQA *jethadcortask = new AliAnalysisTaskEmcalJetHadCorQA(name);
+  jethadcortask->SetJetsName(nJets);
+  jethadcortask->SetAnaType(type);
+  jethadcortask->SetRhoName(nRhosChEm);
+  jethadcortask->SetJetPhiLimits(minPhi,maxPhi);
+  jethadcortask->SetJetEtaLimits(minEta,maxEta);
+  jethadcortask->SetJetAreaCut(minArea);
+  jethadcortask->SetTracksName(nTracks);
+  jethadcortask->SetClusName(nClusters);
+  jethadcortask->SetCalo2Name(nClustersCorr);
+  jethadcortask->SetPtCut(0.15);
+
+  //-------------------------------------------------------
+  // Final settings, pass to manager and set the containers
+  //-------------------------------------------------------
+
+  mgr->AddTask(jethadcortask);
+
+  // Create containers for input/output
+  mgr->ConnectInput (jethadcortask, 0, mgr->GetCommonInputContainer() );
+  AliAnalysisDataContainer *cojethadcor = mgr->CreateContainer(name,
+                                                           TList::Class(),
+                                                           AliAnalysisManager::kOutputContainer,
+                                                           outfilename);
+  mgr->ConnectOutput(jethadcortask,1,cojethadcor);
+
+  return jethadcortask;
+}
index cc62c3604304703c762bbd30dff37864f6d806bc..f1a6d8a741f636a3e7786a2f196a5f4da8111865 100644 (file)
 #pragma link C++ class AliRhoParameter+;
 
 // user tasks
-#pragma link C++ class AliAnalysisTaskEmcalJetHMEC+;
-#pragma link C++ class AliAnalysisTaskEmcalJetSpectra+;
-#pragma link C++ class AliAnalysisTaskSAJF+;
-#pragma link C++ class AliAnalysisTaskSAQA+;
 #pragma link C++ class AliAnalysisTaskCLQA+;
-#pragma link C++ class AliAnalysisTaskSOH+;
-#pragma link C++ class AliAnalysisTaskFullppJet;
 #pragma link C++ class AliAnalysisTaskChargedJetsPA;
+#pragma link C++ class AliAnalysisTaskEmcalJetHMEC+;
+#pragma link C++ class AliAnalysisTaskEmcalJetHadCorQA+;
 #pragma link C++ class AliAnalysisTaskEmcalJetSample+;
-#pragma link C++ class AliAnalysisTaskFullpAJets+;
+#pragma link C++ class AliAnalysisTaskEmcalJetSpectra+;
 #pragma link C++ class AliAnalysisTaskEmcalJetSpectraMECpA;
+#pragma link C++ class AliAnalysisTaskFullpAJets+;
+#pragma link C++ class AliAnalysisTaskFullppJet;
 #pragma link C++ class AliAnalysisTaskQualityAssurancePA;
-#pragma link C++ class AliNtupCumInfo+;
 #pragma link C++ class AliAnalysisTaskRhoVnModulation+;
+#pragma link C++ class AliAnalysisTaskSAJF+;
+#pragma link C++ class AliAnalysisTaskSAQA+;
+#pragma link C++ class AliAnalysisTaskSOH+;
+#pragma link C++ class AliNtupCumInfo+;
 
 #endif