ROOT logo
AliAnalysisTaskJetClusterKine *AddTaskJetClusterKine(char* bGen = "KINECHARGED",Char_t *jf = "ANTIKT", Float_t radius = 0.4, Int_t kWriteAOD = 1, char* deltaFile = "", Float_t ptTrackCut = 0.15, Float_t etaTrackWindow = 0.9, Float_t vertexWindow = 10.);

Float_t kPtTrackCutCl     = 0.15;
Float_t kTrackEtaWindowCl = 0.8;
Float_t kVertexWindowCl   = 10.0;


AliAnalysisTaskJetClusterKine *AddTaskJetClusterKine(char* bGen, Char_t *jf, Float_t radius, Int_t kWriteAOD, char *deltaFile, Float_t ptTrackCut, Float_t etaTrackWindow, Float_t vertexWindow){

 // Creates a jet fider task, configures it and adds it to the analysis manager.
   kPtTrackCutCl     = ptTrackCut;
   kTrackEtaWindowCl = etaTrackWindow;
   kVertexWindowCl   = vertexWindow;

   TString outputFile(deltaFile);
    // Get the pointer to the existing analysis manager via the static access method.
    //==============================================================================
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    if(!mgr){
       ::Error("AddTaskJetClusterKine", "No analysis manager to connect to.");
       return NULL;
    }  

    // Check the analysis type using the event handlers connected to the analysis manager.
    //==============================================================================
    if(!mgr->GetMCtruthEventHandler()){
      ::Error("AddTaskJetClusterKine", "This task requires an input MC event handler");
       return NULL;
    }

    TString typeGen(bGen);
    typeGen.ToUpper();

    // Create the task and configure it.
    //===========================================================================

    TString cAdd = "";
    cAdd += Form("%02d_",TMath::Nint(radius*10.));
    cAdd += Form("Cut%05d",TMath::Nint(1000.*kPtTrackCutCl));
    
    Printf("%s %s%s", typeGen.Data(), jf, cAdd.Data());

    AliAnalysisTaskJetClusterKine* clus = new  AliAnalysisTaskJetClusterKine(Form("JetCluster%s_%s%s",bGen,jf,cAdd.Data()));
      
    // or a config file
    clus->SetVtxCuts(kVertexWindowCl);

    if(typeGen.Contains("KINECHARGED")){
       clus->SetTrackTypeGen(AliAnalysisTaskJetClusterKine::kTrackKineCharged);
       clus->SetTrackPtCut(kPtTrackCutCl);
       clus->SetTrackEtaWindow(kTrackEtaWindowCl);

    }else if(typeGen.Contains("KINEFULL")){
       clus->SetTrackTypeGen(AliAnalysisTaskJetClusterKine::kTrackKineAll);
       clus->SetTrackPtCut(kPtTrackCutCl);
       clus->SetTrackEtaWindow(kTrackEtaWindowCl);
    }

   clus->SetRparam(radius);
   clus->SetGhostArea(0.005);
   clus->SetGhostEtamax(kTrackEtaWindowCl);

   clus->SetDebugLevel(0);

   switch (jf) {
   case "ANTIKT":
     clus->SetAlgorithm(2); // antikt from fastjet/JetDefinition.hh
     break;
   case "CA":
     clus->SetAlgorithm(1); // CA from fastjet/JetDefinition.hh
     break;
   case "KT":
     clus->SetAlgorithm(0); // kt from fastjet/JetDefinition.hh
     break;
   default:
     ::Error("AddTaskJetClusterKine", "Wrong jet finder selected\n");
     return 0;
   }

   TString nameOutArray =  Form("clusters%s_%s%s",bGen,jf,cAdd.Data()); //FF//
   if(kWriteAOD){
     if(outputFile.Length())clus->SetJetOutputFile(outputFile);
     Printf("Output branch: %s",nameOutArray.Data());//FF//  
     clus->SetJetOutputBranch(nameOutArray.Data());//FF//
     clus->SetJetOutputMinPt(0); // store only jets / clusters above a certain threshold
   }
   clus->SetJetOutputContainer(kWriteAOD); //0=no output 1=AOD 2=Exchange

   mgr->AddTask(clus);

   // Create ONLY the output containers for the data produced by the task.
   // Get and connect other common input/output containers via the manager as below
   //==============================================================================
   AliAnalysisDataContainer *coutput1_clus = mgr->CreateContainer(Form("cluster_%s_%s%s",bGen,jf,cAdd.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWGJE_cluster_%s_%s%s",AliAnalysisManager::GetCommonFileName(),bGen,jf,cAdd.Data()));

   mgr->ConnectInput  (clus, 0, mgr->GetCommonInputContainer());

   if(kWriteAOD==1){//FF//
      mgr->ConnectOutput (clus, 0, mgr->GetCommonOutputContainer());

   }

   mgr->ConnectOutput (clus, 1, coutput1_clus );



   if(kWriteAOD==2){//FF//
      AliAnalysisDataContainer *coutput2_clus = mgr->CreateContainer( nameOutArray.Data(), //??
                                           TClonesArray::Class(), 
                                           AliAnalysisManager::kExchangeContainer);
      mgr->ConnectOutput (clus, 2, coutput2_clus); //FF//
   }


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