Improve use of JetContainers, fix cluster name in AddTasks
authorcbianchi <cbianchi@cern.ch>
Tue, 14 Oct 2014 08:02:32 +0000 (10:02 +0200)
committercbianchi <cbianchi@cern.ch>
Tue, 14 Oct 2014 12:05:35 +0000 (14:05 +0200)
PWGJE/FlavourJetTasks/AliAnalysisTaskFlavourJetCorrelations.cxx
PWGJE/FlavourJetTasks/AliAnalysisTaskFlavourJetCorrelations.h
PWGJE/FlavourJetTasks/macros/AddTaskDFilterAndCorrelations.C
PWGJE/FlavourJetTasks/macros/AddTaskFlavourJetCorrelations.C
PWGJE/FlavourJetTasks/macros/AddTasksFlavourJet.C

index 78e72bc..659432c 100644 (file)
@@ -49,6 +49,7 @@
 #include "AliRDHFCutsD0toKpi.h"
 #include "AliRDHFCutsDStartoKpipi.h"
 #include "AliRhoParameter.h"
+#include "AliParticleContainer.h"
 
 ClassImp(AliAnalysisTaskFlavourJetCorrelations)
 
@@ -68,6 +69,7 @@ fCuts(0),
 fMinMass(),
 fMaxMass(),  
 fJetArrName(0),
+fTrackArrName(0),
 fCandArrName(0),
 fLeadingJetOnly(kFALSE),
 fJetRadius(0),
@@ -84,6 +86,9 @@ fSwitchOnPhiAxis(0),
 fSwitchOnOutOfConeAxis(0),
 fSwitchOnSparses(1),
 fNAxesBigSparse(9),
+fJetCont(0),
+fTrackCont(0),
+fClusterCont(0),
 fhstat(),
 fhPtJetTrks(),
 fhPhiJetTrks(),
@@ -151,6 +156,7 @@ fCuts(0),
 fMinMass(),
 fMaxMass(),  
 fJetArrName(0),
+fTrackArrName(0),
 fCandArrName(0),
 fLeadingJetOnly(kFALSE),
 fJetRadius(0),
@@ -167,6 +173,9 @@ fSwitchOnPhiAxis(0),
 fSwitchOnOutOfConeAxis(0),
 fSwitchOnSparses(1),
 fNAxesBigSparse(9),
+fJetCont(0),
+fTrackCont(0),
+fClusterCont(0),
 fhstat(),
 fhPtJetTrks(),
 fhPhiJetTrks(),
@@ -322,6 +331,14 @@ void AliAnalysisTaskFlavourJetCorrelations::UserCreateOutputObjects() {
    // output 
    Info("UserCreateOutputObjects","CreateOutputObjects of task %s\n", GetName());
    AliAnalysisTaskEmcal::UserCreateOutputObjects();
+   
+   fJetCont = GetJetContainer(0);
+   if(fJetCont){
+      fTrackCont =   fJetCont->GetParticleContainer();
+      fClusterCont = fJetCont->GetClusterContainer();
+   }
+
+   
    // define histograms
    // the TList fOutput is already defined in  AliAnalysisTaskEmcal::UserCreateOutputObjects()
    DefineHistoForAnalysis();
@@ -375,10 +392,16 @@ Bool_t AliAnalysisTaskFlavourJetCorrelations::Run()
    }
    
    //retrieve jets
-   fTrackArr = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject("PicoTracks"));
+   //this is a duplication of fTrackCont, but is is used in the loop of line 598 and changing it needs a thorough test 
+   fTrackArr = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTrackArrName));
    //clusArr = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject("CaloClustersCorr"));
-   //jetArr = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fJetArrName));
-   fJetRadius=GetJetContainer(0)->GetJetRadius();
+   //fJetArray = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fJetArrName));
+   //fJetContainer=GetJetContainer(0);
+   //if(!fJetContainer) {
+   //   AliError("Jet Container 0 not found");
+   //   return kFALSE;
+   //}
+   fJetRadius=fJetCont->GetJetRadius();
    
    if(!fTrackArr){
       AliInfo(Form("Could not find the track array\n"));
@@ -409,8 +432,8 @@ Bool_t AliAnalysisTaskFlavourJetCorrelations::Run()
 
    //retrieve charm candidates selected
    Int_t candidates = 0;
-   Int_t njets=GetJetContainer()->GetNJets();
-   
+   Int_t njets=fJetCont->GetNJets();
+   Printf("N jets in this event %d",njets);
    if(!fJetOnlyMode) {
       candidates = fCandidateArray->GetEntriesFast();
   
@@ -504,12 +527,13 @@ Bool_t AliAnalysisTaskFlavourJetCorrelations::Run()
    Double_t leadingJet =0;
    Double_t pointJ[6];
    
-   Int_t ntrarr=fTrackArr->GetEntriesFast();
+   Int_t ntrarr=fTrackCont->GetNParticles();
    fhNtrArr->Fill(ntrarr);
    
    for(Int_t i=0;i<ntrarr;i++){
-      AliVTrack *jtrack=static_cast<AliVTrack*>(fTrackArr->At(i));
+      AliVTrack *jtrack=static_cast<AliVTrack*>(fTrackCont->GetParticle(i));
       //reusing histograms
+      if(!jtrack) continue;
       fhPtJetTrks->Fill(jtrack->Pt());
       fhPhiJetTrks->Fill(jtrack->Phi());
       fhEtaJetTrks->Fill(jtrack->Eta());
@@ -520,7 +544,7 @@ Bool_t AliAnalysisTaskFlavourJetCorrelations::Run()
    //option to use only the leading jet
    if(fLeadingJetOnly){
       for (Int_t iJetsL = 0; iJetsL<njets; iJetsL++) {    
-        AliEmcalJet* jetL = (AliEmcalJet*)GetJetFromArray(iJetsL);
+        AliEmcalJet* jetL = (AliEmcalJet*)fJetCont->GetJet(iJetsL);
         ptjet   = jetL->Pt() - jetL->Area()*rhoval; //It takes into account the background subtraction
         if(ptjet>leadingJet ) leadingJet = ptjet;
         
@@ -535,7 +559,7 @@ Bool_t AliAnalysisTaskFlavourJetCorrelations::Run()
       fPmissing[2]=0;
       
       //Printf("Jet N %d",iJets);
-      AliEmcalJet* jet = (AliEmcalJet*)GetJetFromArray(iJets);
+      AliEmcalJet* jet = (AliEmcalJet*)fJetCont->GetJet(iJets);
       //Printf("Corr task Accept Jet");
       if(!AcceptJet(jet)) {
         fhstat->Fill(5);
@@ -1080,7 +1104,15 @@ Bool_t  AliAnalysisTaskFlavourJetCorrelations::DefineHistoForAnalysis(){
       }
       
       //background (side bands for the Dstar and like sign for D0)
-      fJetRadius=GetJetContainer(0)->GetJetRadius();
+      AliJetContainer *jetCont=GetJetContainer(0);
+      if(!jetCont){
+        Printf("Container 0 not found, try with name %s", fJetArrName.Data());
+        jetCont=GetJetContainer(fJetArrName);
+        if(!jetCont) Printf("NOT FOUND AGAIN");
+        return kFALSE;
+      }
+      Printf("CONTAINER NAME IS %s", jetCont->GetArrayName().Data());
+      //fJetRadius=jetCont->GetJetRadius();
       fhInvMassptD = new TH2F("hInvMassptD",Form("D (Delta R < %.1f) invariant mass distribution p_{T}^{j} > threshold",fJetRadius),nbinsmass,fMinMass,fMaxMass,nbinsptD,ptDlims[0],ptDlims[1]);
       fhInvMassptD->SetStats(kTRUE);
       fhInvMassptD->GetXaxis()->SetTitle("mass (GeV)");
index ddcbd32..7ef4c1f 100644 (file)
@@ -39,6 +39,9 @@ class AliEmcalJet;
 class AliAODRecoDecayHF;
 class AliAODRecoCascadeHF;
 class AliAODEvent;
+class AliParticleContainer;
+class AliClusterContainer;
+class AliJetContainer;
 
 class AliAnalysisTaskFlavourJetCorrelations : public AliAnalysisTaskEmcalJet 
 {
@@ -74,14 +77,19 @@ public:
    void SetMassLimits(Double_t range, Int_t pdg);
    void SetMassLimits(Double_t lowlimit, Double_t uplimit);
    
-   //jet reconstruction algorithm
-   void SetJetArrayName(TString jetArrName) {fJetArrName=jetArrName;};
-   TString GetJetArrayName() const {return fJetArrName;};
+   //jet and track arrays
+   void SetJetArrayName(TString jetArrName) {fJetArrName=jetArrName;}
+   TString GetJetArrayName() const {return fJetArrName;}
+   void SetTrackArrayName(TString trackArrName) {fTrackArrName=trackArrName;}
+   TString GetTrackArrayName() const {return fTrackArrName;}
    
    // trigger on jet events
    void SetTriggerOnLeadingJet(Bool_t triggerOnLeadingJet) {fLeadingJetOnly=triggerOnLeadingJet;};
    Bool_t GetTriggerOnLeadingJet() const {return fLeadingJetOnly;}
    
+   // resolution parameter used in this task
+   void SetRadius(Double_t r){fJetRadius=r;}
+   Double_t GetRadius() const {return fJetRadius;}
    
    // Array of D0 width for the Dstar
    Bool_t SetD0WidthForDStar(Int_t nptbins,Float_t* width);
@@ -149,6 +157,7 @@ private:
    Double_t fMaxMass;             // mass upper limit histogram
    
    TString  fJetArrName;          // name of the jet array, taken from the task running the jet finder
+   TString fTrackArrName;         // name of the array of tracks, default "PicoTracks"
    TString fCandArrName;          // string which correspond to the candidate type
    Bool_t fLeadingJetOnly;        // use only the leading jet in the event to make the correlations
    Double_t fJetRadius;           // jet radius (filled from the JetContainer)
@@ -166,62 +175,66 @@ private:
    Bool_t fSwitchOnSparses;     // turn on/off all THnSparse
     
    Int_t fNAxesBigSparse;      // number of axis
+   AliJetContainer      *fJetCont;      //! jets attachedto the task
+   AliParticleContainer *fTrackCont;    //! tracks attached to the jet container
+   AliClusterContainer  *fClusterCont;  //! Clusters  attached to the jet container 
+  
    
    // Histograms
-   TH1I* fhstat;
+   TH1I* fhstat;                    //!
    //generic jet and jet track distributions
-   TH1F* fhPtJetTrks;
-   TH1F* fhPhiJetTrks;
-   TH1F* fhEtaJetTrks;
-   TH1F* fhEjetTrks;
-   TH1F* fhPtJet;
-   TH1F* fhPhiJet;
-   TH1F* fhEtaJet;
-   TH1F* fhEjet;
-   TH1F* fhNtrArr;
-   TH1F* fhNJetPerEv;
-   TH1F* fhdeltaRJetTracks;
+   TH1F* fhPtJetTrks;              //!
+   TH1F* fhPhiJetTrks;              //!
+   TH1F* fhEtaJetTrks;              //!
+   TH1F* fhEjetTrks;                //!
+   TH1F* fhPtJet;                   //!
+   TH1F* fhPhiJet;                  //!
+   TH1F* fhEtaJet;                  //!
+   TH1F* fhEjet;                    //!
+   TH1F* fhNtrArr;                  //!
+   TH1F* fhNJetPerEv;               //!
+   TH1F* fhdeltaRJetTracks;         //!
    THnSparse* fhsJet; //available in jet only mode
-   // event characteristics;
-   TH1F* fhNDPerEvNoJet;
-   TH1F* fhptDPerEvNoJet;
-   TH1F* fhNJetPerEvNoD;
-   TH1F* fhPtJetPerEvNoD;
-   //D mesons
-   THnSparse* fhsDstandalone;
-   TH2F* fhInvMassptD;
-   TH2F* fhDiffSideBand;
-   TH2F* fhInvMassptDbg;
-   TH1F* fhPtPion;
-
-   //histograms for checks
-   TH1F* fhztracksinjet;
-   TH1F* fhDiffPtTrPtJzNok;
-   TH1F* fhDiffPtTrPtJzok;
-   TH1F* fhDiffPzTrPtJzok;
-   TH1F* fhDiffPzTrPtJzNok;
-   TH1I* fhNtrkjzNok;
-   TH1F* fhztracksinjetT;
-   TH1I* fhControlDInJ;
-   TH1I* fhIDddaugh   ;
-   TH1I* fhIDddaughOut;
-   TH1I* fhIDjetTracks;
-   TH1F* fhDRdaughOut ;
-   TH1F* fhzDinjet;
-   TH1F* fhmissingp;
-   TH1F**fhMissPi;
-   TH1F* fhDeltaPtJet;
-   TH1F* fhRelDeltaPtJet;
-   // D-jet correlation histograms
-   TH1F* fhzDT;
-   TH1F* fhDeltaRD;
-   TH3F* fhDeltaRptDptj;
-   TH3F* fhDeltaRptDptjB;
-   //main histograms
-   THnSparse* fhsDphiz;
+   // event characteristics;        
+   TH1F* fhNDPerEvNoJet;            //!
+   TH1F* fhptDPerEvNoJet;           //!
+   TH1F* fhNJetPerEvNoD;            //!
+   TH1F* fhPtJetPerEvNoD;           //!
+   //D mesons                       
+   THnSparse* fhsDstandalone;       //!
+   TH2F* fhInvMassptD;              //!
+   TH2F* fhDiffSideBand;            //!
+   TH2F* fhInvMassptDbg;            //!
+   TH1F* fhPtPion;                  //!
+                                    //!
+   //histograms for checks          
+   TH1F* fhztracksinjet;            //!
+   TH1F* fhDiffPtTrPtJzNok;         //!
+   TH1F* fhDiffPtTrPtJzok;          //!
+   TH1F* fhDiffPzTrPtJzok;          //!
+   TH1F* fhDiffPzTrPtJzNok;         //!
+   TH1I* fhNtrkjzNok;               //!
+   TH1F* fhztracksinjetT;           //!
+   TH1I* fhControlDInJ;             //!
+   TH1I* fhIDddaugh   ;             //!
+   TH1I* fhIDddaughOut;             //!
+   TH1I* fhIDjetTracks;             //!
+   TH1F* fhDRdaughOut ;             //!
+   TH1F* fhzDinjet;                 //!
+   TH1F* fhmissingp;                //!
+   TH1F**fhMissPi;                  //!
+   TH1F* fhDeltaPtJet;              //!
+   TH1F* fhRelDeltaPtJet;           //!
+   // D-jet correlation histograms  
+   TH1F* fhzDT;                     //!
+   TH1F* fhDeltaRD;                 //!
+   TH3F* fhDeltaRptDptj;            //!
+   TH3F* fhDeltaRptDptjB;           //!
+   //main histograms                
+   THnSparse* fhsDphiz;             //!
    
 
-   ClassDef(AliAnalysisTaskFlavourJetCorrelations,6); // class for charm-jet CorrelationsExch
+   ClassDef(AliAnalysisTaskFlavourJetCorrelations,7); // class for charm-jet CorrelationsExch
 };
 
 #endif
index d9acd50..6624762 100644 (file)
@@ -5,6 +5,7 @@ void *AddTaskDFilterAndCorrelations(
   Bool_t reco = kTRUE /*must be true if theMCon is false*/,
   TString suffix = "",
   TString jetArrname = "",
+  TString trackArrname = "PicoTracks",
   Bool_t triggerOnLeadingJet = kFALSE,
   Int_t leadingHadType = 0 /*0 = charged, 1 = neutral, 2 = both*/,
   Float_t R = 0.4,
@@ -89,13 +90,22 @@ void *AddTaskDFilterAndCorrelations(
   AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations(taskCorrName.Data(), 
      analysiscuts, cand);
   
-  taskCorr->SetJetsName(jetArrname);
+  taskCorr->SetJetArrayName(jetArrname);
+  taskCorr->SetTrackArrayName(trackArrname);
+  //taskCorr->SetRadius(R);
+  AliParticleContainer *trackCont  = taskCorr->AddParticleContainer(trackArrname);
+  trackCont->SetClassName("AliVTrack");
+  
+  AliJetContainer *jetCont = taskCorr->AddJetContainer(jetArrname,cutType,R);
+  if(jetCont) {
+     jetCont->ConnectParticleContainer(trackCont);
+     //jetCont->SetJetAcceptanceType(cutType);
+     jetCont->SetJetPtCut(jptcut);
+     jetCont->SetPercAreaCut(percjetareacut);
+  }
   taskCorr->SetMC(theMCon);
   taskCorr->SetUseReco(reco);
   taskCorr->SetTriggerOnLeadingJet(triggerOnLeadingJet);
-  taskCorr->SetJetAcceptanceType(cutType);
-  taskCorr->SetJetPtCut(jptcut);
-  taskCorr->SetPercAreaCut(percjetareacut);
   taskCorr->SetTypeDJetSelection(typeDjet);
   if(theMCon && trType!=AliAnalysisTaskEmcal::kND){
      taskCorr->SetCaloTriggerPatchInfoName("EmcalTriggers");
index 08bfbeb..b6465cf 100644 (file)
@@ -5,6 +5,7 @@ AliAnalysisTaskFlavourJetCorrelations *AddTaskFlavourJetCorrelations(
   UInt_t pSel=AliVEvent::kAny,
   TString trigClass="",
   TString suffix = "",
+  TString trackArrname = "PicoTracks",
   Bool_t triggerOnLeadingJet = kFALSE,
   Int_t leadingHadType = 0 /*0 = charged, 1 = neutral, 2 = both*/,
   Float_t R = 0.4,
@@ -33,7 +34,8 @@ AliAnalysisTaskFlavourJetCorrelations *AddTaskFlavourJetCorrelations(
      // create the task
      AliAnalysisTaskFlavourJetCorrelations *task = new AliAnalysisTaskFlavourJetCorrelations("AnaTaskFlavourJetCorrelations", 
        dummyDcut, dummycand, bJetOnly);
-     task->SetJetsName(jetArrname);
+     task->SetJetArrayName(jetArrname);
+     task->SetTrackArrayName(trackArrname);
      task->SetMC(theMCon);
      task->SetUseReco(reco);
      task->SetTriggerOnLeadingJet(triggerOnLeadingJet);
index 576447c..36497e7 100644 (file)
@@ -156,7 +156,7 @@ void AddTasksFlavourJet(const Int_t iCandType = 1 /*0 = D0, 1=Dstar...*/,
    return;
 }
 
-
+//run with multiple R
 void AddTasksFlavourJet(
    /*input for Jet Finder*/   
    const UInt_t uTriggerMask = AliVEvent::kMB, /*for jets; the D mesons trigger is defined in the cut object*/
@@ -174,7 +174,8 @@ void AddTasksFlavourJet(
    TString sText="",/*completes the name of the candidate task lists*/
    Bool_t triggerOnLeadingJet = kFALSE
 ){
-   
+   Printf("############## JETS WITH RESOLUTION PARAMETER 0.2, 0.4, 0.6 ####################");
+
    const Int_t    nRadius = 3;
    const Double_t aRadius[] = {  0.2,   0.4,   0.6  };
    const TString  sRadius[] = { "R02", "R04", "R06" };
@@ -218,31 +219,117 @@ void AddTasksFlavourJet(
    
    gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
    
-  for (Int_t i=0; i<nRadius; i++) {
+   TString jetname[nRadius];
+   
+     for (Int_t i=0; i<nRadius; i++) {
       //jet reconstruction
       AliEmcalJetTask *taskFJ = AddTaskEmcalJet(sUsedTrks.Data(),sUsedClus.Data(),iJetAlgo,aRadius[i],iJetType);
       
       taskFJ->SelectCollisionCandidates(uTriggerMask);
       
       Printf("Now Jet Finder with R = %f",aRadius[i]);
-      //sText=sRadius;
-      //my code
-      AddMyAnalysis(taskFJ,aRadius[i],iCandType,sCutFile,dJetPtCut,dJetAreaCut,
+      jetname[i] = taskFJ->GetName();
+  }
+   
+  for (Int_t i=0; i<nRadius; i++) {
+   
+      AddMyAnalysis(jetname[i],aRadius[i],iCandType,sCutFile,dJetPtCut,dJetAreaCut,
         acctype,bIsMC,bIsReco,bIsMap,sText,triggerOnLeadingJet);
   }
 }
 
-void AddMyAnalysis(AliAnalysisTaskSE *jetTask, Double_t aRadius,
+//run with HF tracks cuts (filterbit 4 and 9  -> 16, 512)
+void AddTasksFlavourJet(
+   /*input for Jet Finder*/   
+   const UInt_t uTriggerMask = AliVEvent::kMB, /*for jets; the D mesons trigger is defined in the cut object*/
+   const Bool_t bIsMC = kFALSE,
+   const Double_t R=0.4,
+   /*input for D mesons*/ 
    const Int_t iCandType = 1 /*0 = D0, 1=Dstar...*/,
    const TString sCutFile = "cutsHF/D0toKpiCutsppRecVtxNoPileupRejNoEMCAL.root",
    const Double_t dJetPtCut   = 1.,
    const Double_t dJetAreaCut = 0.,
    const char *acctype = "TPC",
-   const Bool_t bIsMC = kFALSE,
    const Bool_t bIsReco = kFALSE,
    const Bool_t bIsMap = kFALSE,
    TString sText="",/*completes the name of the candidate task lists*/
    Bool_t triggerOnLeadingJet = kFALSE
+
+   ){
+
+
+Printf("############## SELECT TRACKS WITH FILTER BIT 4 AND 9 ####################");
+//=============================================================================
+
+AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+
+if (!mgr) {
+   ::Error("AddTasksFlavourJet.C::AddTasksFlavourJet", "No analysis manager to connect to.");
+   return;
+}
+
+TString type = mgr->GetInputEventHandler()->GetDataType();
+if (!type.Contains("ESD") && !type.Contains("AOD")) {
+   ::Error("AddTasksFlavourJet.C::AddTasksFlavourJet", "Task manager to have an ESD or AOD input handler.");
+   return;
+}
+
+if (!mgr->GetInputEventHandler()) {
+   ::Error("AddTasksFlavourJet.C::AddTasksFlavourJet", "This task requires an input event handler");
+   return;
+}
+//=============================================================================
+
+// EMCal framework
+// -- Physics selection task
+if(!bIsMC){
+   gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPhysicsSelection.C");
+   AliPhysicsSelectionTask *physSelTask = AddTaskEmcalPhysicsSelection(kTRUE, kTRUE, uTriggerMask, 5, 5, 10, kTRUE, -1, -1, -1, -1);
+   
+   if (!physSelTask) {
+      cout << "no physSelTask"; 
+      return; 
+   }
+}
+// -- 
+gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalSetup.C");
+AliEmcalSetupTask *taskSetupEMCal = AddTaskEmcalSetup();
+//taskSetupEMCal->SetOcdbPath("raw://"); //needed for period LHC12h and i
+taskSetupEMCal->SetGeoPath("$ALICE_ROOT/OADB/EMCAL");
+taskSetupEMCal->SelectCollisionCandidates(uTriggerMask);
+
+//define the track sample
+TString tracksHFname="HFTrackBits";
+gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalAodTrackFilter.C");
+AliEmcalAodTrackFilterTask *trackfilter=AddTaskEmcalAodTrackFilter(tracksHFname,"tracks","","AliEmcalAodTrackFilterTask4HF" );
+trackfilter->SetAODfilterBits(16,512);
+
+//transofm into picotracks
+gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
+AliEmcalPicoTrackMaker* picotracksHF=AddTaskEmcalPicoTrackMaker(Form("Pico%s",tracksHFname.Data()), tracksHFname,0,1000,-10,10,-10,10,1,"AliEmcalPicoTrackMakerHF");
+
+//run the jet finder
+gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
+AliEmcalJetTask* taskFJ=AddTaskEmcalJet(Form("Pico%s",tracksHFname.Data()), "caloClusters", 1, R);
+TString jetname = taskFJ->GetName();
+AddMyAnalysis(jetname,R,iCandType,sCutFile,dJetPtCut,dJetAreaCut,
+   acctype,bIsMC,bIsReco,bIsMap,sText,triggerOnLeadingJet,Form("Pico%s",tracksHFname.Data()));
+
+
+}
+void AddMyAnalysis(TString& jetname, Double_t aRadius,
+   const Int_t iCandType = 1 /*0 = D0, 1=Dstar...*/,
+   const TString sCutFile = "cutsHF/D0toKpiCutsppRecVtxNoPileupRejNoEMCAL.root",
+   const Double_t dJetPtCut   = 1.,
+   const Double_t dJetAreaCut = 0.,
+   const char *acctype = "TPC",
+   const Bool_t bIsMC = kFALSE,
+   const Bool_t bIsReco = kFALSE,
+   const Bool_t bIsMap = kFALSE,
+   TString sText="",/*completes the name of the candidate task lists*/
+   Bool_t triggerOnLeadingJet = kFALSE,
+   const TString& trackArrName = "PicoTracks"
 ){
    
    AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
@@ -263,7 +350,8 @@ void AddMyAnalysis(AliAnalysisTaskSE *jetTask, Double_t aRadius,
       bIsMC,
       bIsReco,
       sText,
-      jetTask->GetName(),
+      jetname,
+      trackArrName,
       //Form("JetR%s",sRadius[i].Data()),
       triggerOnLeadingJet,
       0,
@@ -274,3 +362,5 @@ void AddMyAnalysis(AliAnalysisTaskSE *jetTask, Double_t aRadius,
       );
    
 }
+
+