ROOT logo
AliAnalysisTaskSE *AddTaskDFilterAndCorrelations(
  AliAnalysisTaskSEDmesonsFilterCJ::ECandidateType cand = AliAnalysisTaskSEDmesonsFilterCJ::kDstartoKpipi,
  TString filename = "DStartoKpipiCuts.root",
  Bool_t theMCon = kFALSE,
  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,
  Float_t jptcut = 10.,
  const char *cutType = "TPC",
  Int_t thnsparse=1, /*-1 = no thnsparse, 0 = heavy, 1 = light*/
  Double_t percjetareacut = -1.,
  AliAnalysisTaskEmcal::TriggerType trType=AliAnalysisTaskEmcal::kND,
  Int_t typeDjet=2,
  TString subwagons=""
)
{
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to.");
    return NULL;
  } 

  Bool_t useStdC = kFALSE;
  TFile* filecuts=TFile::Open(filename);
  if(!filecuts || (filecuts && !filecuts->IsOpen())) {
    cout<<"Input file not found: use std cuts"<<endl;
    useStdC = kTRUE;
  }

  AliRDHFCuts *analysiscuts=0x0;
  switch (cand) {
  case 0 :
    if(useStdC) {
      analysiscuts = new AliRDHFCutsD0toKpi();
      analysiscuts->SetStandardCutsPP2010();
    } else
      analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
    break;
  case 1 :
    if(useStdC) {
      analysiscuts = new AliRDHFCutsDStartoKpipi();
      analysiscuts->SetStandardCutsPP2010();
    } else
      analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
    analysiscuts->SetName("DStartoKpipiCuts");
    break;
  }
  
  if (!analysiscuts) { // mm let's see if everything is ok
    AliFatal("Specific AliRDHFCuts not found");
    return;
  } 

  printf("CREATE TASK\n"); //CREATE THE TASK

  TString candname="DStar"; 
  if(cand==0)  candname="D0";
  TString sR = Form("R%.0f",R*10);
  
  TString taskFiltername="DmesonsFilterCJ";
  taskFiltername+=candname;
  taskFiltername+=suffix;
  if(theMCon) taskFiltername+="MC";
  if(!reco)   taskFiltername+="gen";
  
  AliAnalysisTaskSEDmesonsFilterCJ* taskFilter = mgr->GetTask(taskFiltername.Data());
  Bool_t bTaskFilter=kTRUE;
  if (!taskFilter){
     bTaskFilter=kFALSE;
     taskFilter = new AliAnalysisTaskSEDmesonsFilterCJ(taskFiltername.Data(),analysiscuts,cand);
     if(!theMCon) reco=kTRUE;
     taskFilter->SetMC(theMCon); //D meson settings
     taskFilter->SetUseReco(reco);
     mgr->AddTask(taskFilter);
  } else Printf("Task %s already exist, continue",taskFiltername.Data());

  // create the task
  TString taskCorrName="TaskFlavourJetCorrelations";
  taskCorrName+=candname;
  taskCorrName+=suffix;
  if(theMCon) taskCorrName+="MC";
  if(!reco)   taskCorrName+="gen";
  taskCorrName+=cutType;
  taskCorrName+=Form("PTj%.0f",jptcut);
  taskCorrName+=sR;
  taskCorrName+=Form("Typ%d",typeDjet);

  AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations(taskCorrName.Data(), 
     analysiscuts, cand);
  
  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->SetTypeDJetSelection(typeDjet);
  if(theMCon && trType!=AliAnalysisTaskEmcal::kND){
     taskCorr->SetCaloTriggerPatchInfoName("EmcalTriggers");
     taskCorr->SetTriggerTypeSel(trType);
  }
  if(thnsparse==-1)taskCorr->TurnOffTHnSparse();
  if(thnsparse==0) taskCorr->HeavyTHnSparse();
  if(thnsparse==1) taskCorr->LightTHnSparse();   
    
  mgr->AddTask(taskCorr);

  if(theMCon) {
     suffix+="MC";
     if(reco) suffix+="rec";  
  }
  
  
  // Create and connect containers for input/output
  TString outputfile = AliAnalysisManager::GetCommonFileName();
  TString outputfileF = outputfile, outputfileC = outputfile;
  outputfileF += ":PWG3_D2H_DmesonsForJetCorrelations";
  outputfileC += ":PWG3_D2H_DEmcalJet";
  
  outputfileF += suffix;
  outputfileC += suffix;

  TString nameContainerF0="histograms";
  TString nameContainerF1="cuts";
  
  TString nameContainerC0="hCor";
  TString nameContainerC1="cutsJ";

  TString nameContainerFC2="Dcandidates";
  TString nameContainerFC3="DSBcandidates";

  nameContainerF0  += candname;
  nameContainerF1  += candname;
  nameContainerC0  += candname;
  nameContainerC1  += candname;
  nameContainerFC2 += candname;
  nameContainerFC3 += candname;
  
  nameContainerF0  += suffix;
  nameContainerF1  += suffix;
  nameContainerC0  += suffix;
  nameContainerC1  += suffix;
  nameContainerFC2 += suffix;
  nameContainerFC3 += suffix;
  
  nameContainerC0+=sR;
  nameContainerC1+=sR;
  if(typeDjet!=2) { //no particular name for default
     nameContainerC0+=Form("Typ%d",typeDjet);
     nameContainerC1+=Form("Typ%d",typeDjet);
  }
  
  nameContainerC0 += subwagons;
  nameContainerC1 += subwagons;
  
  // ------ input data ------
  AliAnalysisDataContainer *cinput0  = mgr->GetCommonInputContainer();
  cinput0->SetName(Form("in%s%s",candname.Data(),suffix.Data()));
  
  // ----- output data -----
  AliAnalysisDataContainer *coutputF0;
  AliAnalysisDataContainer *coutputF1;
  AliAnalysisDataContainer *coutputFC2;
  AliAnalysisDataContainer *coutputFC3;
  
  if(!bTaskFilter){
  coutputF0 = mgr->CreateContainer(nameContainerF0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileF.Data());
  
  coutputF1 = mgr->CreateContainer(nameContainerF1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileF.Data());
  
  coutputFC2 = mgr->CreateContainer(nameContainerFC2, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); // exchange
  
  coutputFC3 = mgr->CreateContainer(nameContainerFC3, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); // exchange

  } else {
     TObjArray * cnt = mgr->GetContainers();
     coutputF0 = (AliAnalysisDataContainer*)cnt->FindObject(nameContainerF0);
     coutputF1 = (AliAnalysisDataContainer*)cnt->FindObject(nameContainerF1);
     coutputFC2= (AliAnalysisDataContainer*)cnt->FindObject(nameContainerFC2);
     coutputFC3= (AliAnalysisDataContainer*)cnt->FindObject(nameContainerFC3);
  }
  
  AliAnalysisDataContainer *coutputC0 = mgr->CreateContainer(nameContainerC0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileC.Data());

  AliAnalysisDataContainer *coutputC1 = mgr->CreateContainer(nameContainerC1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileC.Data());
  
    
  mgr->ConnectInput(taskFilter,0,cinput0);
  mgr->ConnectInput(taskCorr,0,cinput0);
  
  mgr->ConnectOutput(taskFilter,1,coutputF0);
  mgr->ConnectOutput(taskFilter,2,coutputF1);
  mgr->ConnectOutput(taskFilter,3,coutputFC2);
  mgr->ConnectOutput(taskFilter,4,coutputFC3);
  
  
  mgr->ConnectInput(taskCorr,1,coutputFC2);
  mgr->ConnectInput(taskCorr,2,coutputFC3);
  mgr->ConnectOutput(taskCorr,1,coutputC0);
  mgr->ConnectOutput(taskCorr,2,coutputC1);
  //if(cand==1) mgr->ConnectOutput(task,4,coutput4);

  Printf("Input and Output connected to the manager");
  return taskCorr; 
}

 AddTaskDFilterAndCorrelations.C:1
 AddTaskDFilterAndCorrelations.C:2
 AddTaskDFilterAndCorrelations.C:3
 AddTaskDFilterAndCorrelations.C:4
 AddTaskDFilterAndCorrelations.C:5
 AddTaskDFilterAndCorrelations.C:6
 AddTaskDFilterAndCorrelations.C:7
 AddTaskDFilterAndCorrelations.C:8
 AddTaskDFilterAndCorrelations.C:9
 AddTaskDFilterAndCorrelations.C:10
 AddTaskDFilterAndCorrelations.C:11
 AddTaskDFilterAndCorrelations.C:12
 AddTaskDFilterAndCorrelations.C:13
 AddTaskDFilterAndCorrelations.C:14
 AddTaskDFilterAndCorrelations.C:15
 AddTaskDFilterAndCorrelations.C:16
 AddTaskDFilterAndCorrelations.C:17
 AddTaskDFilterAndCorrelations.C:18
 AddTaskDFilterAndCorrelations.C:19
 AddTaskDFilterAndCorrelations.C:20
 AddTaskDFilterAndCorrelations.C:21
 AddTaskDFilterAndCorrelations.C:22
 AddTaskDFilterAndCorrelations.C:23
 AddTaskDFilterAndCorrelations.C:24
 AddTaskDFilterAndCorrelations.C:25
 AddTaskDFilterAndCorrelations.C:26
 AddTaskDFilterAndCorrelations.C:27
 AddTaskDFilterAndCorrelations.C:28
 AddTaskDFilterAndCorrelations.C:29
 AddTaskDFilterAndCorrelations.C:30
 AddTaskDFilterAndCorrelations.C:31
 AddTaskDFilterAndCorrelations.C:32
 AddTaskDFilterAndCorrelations.C:33
 AddTaskDFilterAndCorrelations.C:34
 AddTaskDFilterAndCorrelations.C:35
 AddTaskDFilterAndCorrelations.C:36
 AddTaskDFilterAndCorrelations.C:37
 AddTaskDFilterAndCorrelations.C:38
 AddTaskDFilterAndCorrelations.C:39
 AddTaskDFilterAndCorrelations.C:40
 AddTaskDFilterAndCorrelations.C:41
 AddTaskDFilterAndCorrelations.C:42
 AddTaskDFilterAndCorrelations.C:43
 AddTaskDFilterAndCorrelations.C:44
 AddTaskDFilterAndCorrelations.C:45
 AddTaskDFilterAndCorrelations.C:46
 AddTaskDFilterAndCorrelations.C:47
 AddTaskDFilterAndCorrelations.C:48
 AddTaskDFilterAndCorrelations.C:49
 AddTaskDFilterAndCorrelations.C:50
 AddTaskDFilterAndCorrelations.C:51
 AddTaskDFilterAndCorrelations.C:52
 AddTaskDFilterAndCorrelations.C:53
 AddTaskDFilterAndCorrelations.C:54
 AddTaskDFilterAndCorrelations.C:55
 AddTaskDFilterAndCorrelations.C:56
 AddTaskDFilterAndCorrelations.C:57
 AddTaskDFilterAndCorrelations.C:58
 AddTaskDFilterAndCorrelations.C:59
 AddTaskDFilterAndCorrelations.C:60
 AddTaskDFilterAndCorrelations.C:61
 AddTaskDFilterAndCorrelations.C:62
 AddTaskDFilterAndCorrelations.C:63
 AddTaskDFilterAndCorrelations.C:64
 AddTaskDFilterAndCorrelations.C:65
 AddTaskDFilterAndCorrelations.C:66
 AddTaskDFilterAndCorrelations.C:67
 AddTaskDFilterAndCorrelations.C:68
 AddTaskDFilterAndCorrelations.C:69
 AddTaskDFilterAndCorrelations.C:70
 AddTaskDFilterAndCorrelations.C:71
 AddTaskDFilterAndCorrelations.C:72
 AddTaskDFilterAndCorrelations.C:73
 AddTaskDFilterAndCorrelations.C:74
 AddTaskDFilterAndCorrelations.C:75
 AddTaskDFilterAndCorrelations.C:76
 AddTaskDFilterAndCorrelations.C:77
 AddTaskDFilterAndCorrelations.C:78
 AddTaskDFilterAndCorrelations.C:79
 AddTaskDFilterAndCorrelations.C:80
 AddTaskDFilterAndCorrelations.C:81
 AddTaskDFilterAndCorrelations.C:82
 AddTaskDFilterAndCorrelations.C:83
 AddTaskDFilterAndCorrelations.C:84
 AddTaskDFilterAndCorrelations.C:85
 AddTaskDFilterAndCorrelations.C:86
 AddTaskDFilterAndCorrelations.C:87
 AddTaskDFilterAndCorrelations.C:88
 AddTaskDFilterAndCorrelations.C:89
 AddTaskDFilterAndCorrelations.C:90
 AddTaskDFilterAndCorrelations.C:91
 AddTaskDFilterAndCorrelations.C:92
 AddTaskDFilterAndCorrelations.C:93
 AddTaskDFilterAndCorrelations.C:94
 AddTaskDFilterAndCorrelations.C:95
 AddTaskDFilterAndCorrelations.C:96
 AddTaskDFilterAndCorrelations.C:97
 AddTaskDFilterAndCorrelations.C:98
 AddTaskDFilterAndCorrelations.C:99
 AddTaskDFilterAndCorrelations.C:100
 AddTaskDFilterAndCorrelations.C:101
 AddTaskDFilterAndCorrelations.C:102
 AddTaskDFilterAndCorrelations.C:103
 AddTaskDFilterAndCorrelations.C:104
 AddTaskDFilterAndCorrelations.C:105
 AddTaskDFilterAndCorrelations.C:106
 AddTaskDFilterAndCorrelations.C:107
 AddTaskDFilterAndCorrelations.C:108
 AddTaskDFilterAndCorrelations.C:109
 AddTaskDFilterAndCorrelations.C:110
 AddTaskDFilterAndCorrelations.C:111
 AddTaskDFilterAndCorrelations.C:112
 AddTaskDFilterAndCorrelations.C:113
 AddTaskDFilterAndCorrelations.C:114
 AddTaskDFilterAndCorrelations.C:115
 AddTaskDFilterAndCorrelations.C:116
 AddTaskDFilterAndCorrelations.C:117
 AddTaskDFilterAndCorrelations.C:118
 AddTaskDFilterAndCorrelations.C:119
 AddTaskDFilterAndCorrelations.C:120
 AddTaskDFilterAndCorrelations.C:121
 AddTaskDFilterAndCorrelations.C:122
 AddTaskDFilterAndCorrelations.C:123
 AddTaskDFilterAndCorrelations.C:124
 AddTaskDFilterAndCorrelations.C:125
 AddTaskDFilterAndCorrelations.C:126
 AddTaskDFilterAndCorrelations.C:127
 AddTaskDFilterAndCorrelations.C:128
 AddTaskDFilterAndCorrelations.C:129
 AddTaskDFilterAndCorrelations.C:130
 AddTaskDFilterAndCorrelations.C:131
 AddTaskDFilterAndCorrelations.C:132
 AddTaskDFilterAndCorrelations.C:133
 AddTaskDFilterAndCorrelations.C:134
 AddTaskDFilterAndCorrelations.C:135
 AddTaskDFilterAndCorrelations.C:136
 AddTaskDFilterAndCorrelations.C:137
 AddTaskDFilterAndCorrelations.C:138
 AddTaskDFilterAndCorrelations.C:139
 AddTaskDFilterAndCorrelations.C:140
 AddTaskDFilterAndCorrelations.C:141
 AddTaskDFilterAndCorrelations.C:142
 AddTaskDFilterAndCorrelations.C:143
 AddTaskDFilterAndCorrelations.C:144
 AddTaskDFilterAndCorrelations.C:145
 AddTaskDFilterAndCorrelations.C:146
 AddTaskDFilterAndCorrelations.C:147
 AddTaskDFilterAndCorrelations.C:148
 AddTaskDFilterAndCorrelations.C:149
 AddTaskDFilterAndCorrelations.C:150
 AddTaskDFilterAndCorrelations.C:151
 AddTaskDFilterAndCorrelations.C:152
 AddTaskDFilterAndCorrelations.C:153
 AddTaskDFilterAndCorrelations.C:154
 AddTaskDFilterAndCorrelations.C:155
 AddTaskDFilterAndCorrelations.C:156
 AddTaskDFilterAndCorrelations.C:157
 AddTaskDFilterAndCorrelations.C:158
 AddTaskDFilterAndCorrelations.C:159
 AddTaskDFilterAndCorrelations.C:160
 AddTaskDFilterAndCorrelations.C:161
 AddTaskDFilterAndCorrelations.C:162
 AddTaskDFilterAndCorrelations.C:163
 AddTaskDFilterAndCorrelations.C:164
 AddTaskDFilterAndCorrelations.C:165
 AddTaskDFilterAndCorrelations.C:166
 AddTaskDFilterAndCorrelations.C:167
 AddTaskDFilterAndCorrelations.C:168
 AddTaskDFilterAndCorrelations.C:169
 AddTaskDFilterAndCorrelations.C:170
 AddTaskDFilterAndCorrelations.C:171
 AddTaskDFilterAndCorrelations.C:172
 AddTaskDFilterAndCorrelations.C:173
 AddTaskDFilterAndCorrelations.C:174
 AddTaskDFilterAndCorrelations.C:175
 AddTaskDFilterAndCorrelations.C:176
 AddTaskDFilterAndCorrelations.C:177
 AddTaskDFilterAndCorrelations.C:178
 AddTaskDFilterAndCorrelations.C:179
 AddTaskDFilterAndCorrelations.C:180
 AddTaskDFilterAndCorrelations.C:181
 AddTaskDFilterAndCorrelations.C:182
 AddTaskDFilterAndCorrelations.C:183
 AddTaskDFilterAndCorrelations.C:184
 AddTaskDFilterAndCorrelations.C:185
 AddTaskDFilterAndCorrelations.C:186
 AddTaskDFilterAndCorrelations.C:187
 AddTaskDFilterAndCorrelations.C:188
 AddTaskDFilterAndCorrelations.C:189
 AddTaskDFilterAndCorrelations.C:190
 AddTaskDFilterAndCorrelations.C:191
 AddTaskDFilterAndCorrelations.C:192
 AddTaskDFilterAndCorrelations.C:193
 AddTaskDFilterAndCorrelations.C:194
 AddTaskDFilterAndCorrelations.C:195
 AddTaskDFilterAndCorrelations.C:196
 AddTaskDFilterAndCorrelations.C:197
 AddTaskDFilterAndCorrelations.C:198
 AddTaskDFilterAndCorrelations.C:199
 AddTaskDFilterAndCorrelations.C:200
 AddTaskDFilterAndCorrelations.C:201
 AddTaskDFilterAndCorrelations.C:202
 AddTaskDFilterAndCorrelations.C:203
 AddTaskDFilterAndCorrelations.C:204
 AddTaskDFilterAndCorrelations.C:205
 AddTaskDFilterAndCorrelations.C:206
 AddTaskDFilterAndCorrelations.C:207
 AddTaskDFilterAndCorrelations.C:208
 AddTaskDFilterAndCorrelations.C:209
 AddTaskDFilterAndCorrelations.C:210
 AddTaskDFilterAndCorrelations.C:211
 AddTaskDFilterAndCorrelations.C:212
 AddTaskDFilterAndCorrelations.C:213
 AddTaskDFilterAndCorrelations.C:214
 AddTaskDFilterAndCorrelations.C:215
 AddTaskDFilterAndCorrelations.C:216
 AddTaskDFilterAndCorrelations.C:217
 AddTaskDFilterAndCorrelations.C:218
 AddTaskDFilterAndCorrelations.C:219
 AddTaskDFilterAndCorrelations.C:220
 AddTaskDFilterAndCorrelations.C:221