ROOT logo
// $Id$

AliJJetTask* AddTaskJJet(
  Int_t       trigger            = AliVEvent::kEMCEJE,
  const char *taskname           = "AliJJetTask",
  int       debug 		 = 1	
)
{  

    // Get the pointer to the existing analysis manager via the static access method.
    //==============================================================================
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    if (!mgr)
    {
        ::Error("AddTaskJJet", "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("AddTaskJJet", "This task requires an input event handler");
        return NULL;
    }

    //-------------------------------------------------------
    // Init the task and do settings
    //-------------------------------------------------------

    TString name(taskname);
    //name += trigger;

    //TString tracksName = "PicoTracks";
    TString tracksName = "PicoTracks";
    TString clustersName = "EmcCaloClusters";
    TString clustersCorrName = "CaloClustersCorr";
    TString rhoName = "";


    gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");

    const int nJetFinder=6;	
    AliEmcalJetTask* jetFinderTask[nJetFinder];
    double aConeSizes[nJetFinder]={0.4,0.5,0.6,0.4,0.5,0.6};
    int aJetType[nJetFinder]={0,0,0,1,1,1}; // 0 :FullJet  1:Charged
    for (int i=0; i<nJetFinder; i++){
        jetFinderTask[i] = AddTaskEmcalJet(tracksName,clustersCorrName,1,aConeSizes[i],aJetType[i],0.15,0.300,0.005,1,"Jet",5.); // anti-kt
    }

    char *ntracks = tracksName;
    char *nclusters = clustersCorrName;
    char *nrho = rhoName;
    Printf("name: %s",name.Data());

    AliJJetTask* jtTask = new AliJJetTask(name, nJetFinder);
    jtTask->SetDebug(debug);
    jtTask->SelectCollisionCandidates(trigger);


    AliParticleContainer *trackCont  = jtTask->AddParticleContainer(ntracks);
    trackCont->SetClassName("AliVTrack");
    AliClusterContainer *clusterCont = jtTask->AddClusterContainer(nclusters);

    char *type="EMCAL";  
    TString strType(type);
    AliJetContainer *jetCont[nJetFinder];

    for(int i=0; i<nJetFinder; i++){
        jetCont[i] = jtTask->AddJetContainer(jetFinderTask[i]->GetName(),strType,aConeSizes[i]);
        if(jetCont[i]) {
            jetCont[i]->SetRhoName(nrho);
            jetCont[i]->ConnectParticleContainer(trackCont);
            jetCont[i]->ConnectClusterContainer(clusterCont);
            jetCont[i]->SetZLeadingCut(0.98,0.98);
            jetCont[i]->SetPercAreaCut(0.6);
            jetCont[i]->SetJetPtCut(5);    
            jetCont[i]->SetLeadingHadronType(0);
        }
    }

    //-------------------------------------------------------
    // Final settings, pass to manager and set the containers
    //-------------------------------------------------------

    mgr->AddTask(jtTask);



    // Create containers for input/output
    AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer()  ;
   TString contname(name);
    contname += "_histos";
    cout << "Create container " << contname << endl;
    AliAnalysisDataContainer *coutput = mgr->CreateContainer(contname.Data(),
			TList::Class(),AliAnalysisManager::kOutputContainer,
			Form("%s", AliAnalysisManager::GetCommonFileName()));

	mgr->ConnectInput  (jtTask, 0,  cinput );
	mgr->ConnectOutput (jtTask, 1, coutput ); // MUST HAVE IT, DON"T KNOW WHY ??? maybe from EMCALJET code

	return jtTask;
}
 AddTaskJJet.C:1
 AddTaskJJet.C:2
 AddTaskJJet.C:3
 AddTaskJJet.C:4
 AddTaskJJet.C:5
 AddTaskJJet.C:6
 AddTaskJJet.C:7
 AddTaskJJet.C:8
 AddTaskJJet.C:9
 AddTaskJJet.C:10
 AddTaskJJet.C:11
 AddTaskJJet.C:12
 AddTaskJJet.C:13
 AddTaskJJet.C:14
 AddTaskJJet.C:15
 AddTaskJJet.C:16
 AddTaskJJet.C:17
 AddTaskJJet.C:18
 AddTaskJJet.C:19
 AddTaskJJet.C:20
 AddTaskJJet.C:21
 AddTaskJJet.C:22
 AddTaskJJet.C:23
 AddTaskJJet.C:24
 AddTaskJJet.C:25
 AddTaskJJet.C:26
 AddTaskJJet.C:27
 AddTaskJJet.C:28
 AddTaskJJet.C:29
 AddTaskJJet.C:30
 AddTaskJJet.C:31
 AddTaskJJet.C:32
 AddTaskJJet.C:33
 AddTaskJJet.C:34
 AddTaskJJet.C:35
 AddTaskJJet.C:36
 AddTaskJJet.C:37
 AddTaskJJet.C:38
 AddTaskJJet.C:39
 AddTaskJJet.C:40
 AddTaskJJet.C:41
 AddTaskJJet.C:42
 AddTaskJJet.C:43
 AddTaskJJet.C:44
 AddTaskJJet.C:45
 AddTaskJJet.C:46
 AddTaskJJet.C:47
 AddTaskJJet.C:48
 AddTaskJJet.C:49
 AddTaskJJet.C:50
 AddTaskJJet.C:51
 AddTaskJJet.C:52
 AddTaskJJet.C:53
 AddTaskJJet.C:54
 AddTaskJJet.C:55
 AddTaskJJet.C:56
 AddTaskJJet.C:57
 AddTaskJJet.C:58
 AddTaskJJet.C:59
 AddTaskJJet.C:60
 AddTaskJJet.C:61
 AddTaskJJet.C:62
 AddTaskJJet.C:63
 AddTaskJJet.C:64
 AddTaskJJet.C:65
 AddTaskJJet.C:66
 AddTaskJJet.C:67
 AddTaskJJet.C:68
 AddTaskJJet.C:69
 AddTaskJJet.C:70
 AddTaskJJet.C:71
 AddTaskJJet.C:72
 AddTaskJJet.C:73
 AddTaskJJet.C:74
 AddTaskJJet.C:75
 AddTaskJJet.C:76
 AddTaskJJet.C:77
 AddTaskJJet.C:78
 AddTaskJJet.C:79
 AddTaskJJet.C:80
 AddTaskJJet.C:81
 AddTaskJJet.C:82
 AddTaskJJet.C:83
 AddTaskJJet.C:84
 AddTaskJJet.C:85
 AddTaskJJet.C:86
 AddTaskJJet.C:87
 AddTaskJJet.C:88
 AddTaskJJet.C:89
 AddTaskJJet.C:90
 AddTaskJJet.C:91
 AddTaskJJet.C:92
 AddTaskJJet.C:93
 AddTaskJJet.C:94
 AddTaskJJet.C:95
 AddTaskJJet.C:96
 AddTaskJJet.C:97
 AddTaskJJet.C:98
 AddTaskJJet.C:99
 AddTaskJJet.C:100
 AddTaskJJet.C:101
 AddTaskJJet.C:102
 AddTaskJJet.C:103
 AddTaskJJet.C:104