ROOT logo
AliAnalysisTaskEmcalDiJetAna* AddTaskEmcalDiJetAna(TString     kTracksName         = "PicoTracks", 
						   TString     kClusName           = "caloClusterCorr",
						   Double_t    R                   = 0.4, 
						   Double_t    ptminTrack          = 0.15, 
						   Double_t    etminClus           = 0.3, 
						   Int_t       rhoType             = 0,
						   TString     trigClass           = "",
						   const char *CentEst             = "V0A",
						   Int_t       pSel                = AliVEvent::kINT7,
						   Int_t       matchFullCh         = AliAnalysisTaskEmcalDiJetBase::kNoMatching,
						   Double_t    ptTrackBias         = 0.,
						   Int_t       corrType            = AliAnalysisTaskEmcalDiJetBase::kCorrelateTwo,
						   Float_t     nefCut              = 10.,
						   Int_t       nCentBins           = 5,
						   Double_t    scaleFact           = 1.28
						   ) {
  
  enum AlgoType {kKT, kANTIKT};
  enum JetType  {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};

  // #### Define manager and data container names
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskEmcalDiJet", "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("AddTaskEmcalDiJet", "This task requires an input event handler");
      return NULL;
    }

  // #### Add necessary jet finder tasks
  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");

  AliEmcalJetTask* jetFinderTaskFull    = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
  AliEmcalJetTask* jetFinderTaskCharged = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
  jetFinderTaskFull->SelectCollisionCandidates(AliVEvent::kAny);
  jetFinderTaskCharged->SelectCollisionCandidates(AliVEvent::kAny);


  TString strJetsFull = jetFinderTaskFull->GetName();
  TString strJetsCh   = jetFinderTaskCharged->GetName();

  // Add kt jet finder and rho task in case we want background subtraction
  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
  AliEmcalJetTask *jetFinderKt;
  AliEmcalJetTask *jetFinderAKt;
  AliAnalysisTaskRhoSparse *rhoTask;
  if(rhoType==1) {
    jetFinderKt   = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",0.);
    jetFinderAKt  = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
    jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
    jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny);

    TF1 *fScale = new TF1("fScale","[0]",0.,100.);
    fScale->SetParameter(0,scaleFact);
    TString rhoSparseName = Form("RhoSparseR%03d",(int)(100*R));
    rhoTask = AddTaskRhoSparse(jetFinderKt->GetName(),
			       jetFinderAKt->GetName(),
			       kTracksName.Data(),
			       kClusName.Data(),
			       rhoSparseName.Data(),
			       R,
			       "TPC",
			       0.01,
			       0.15,
			       0,
			       fScale,
			       0,
			       kTRUE,
			       rhoSparseName.Data(),
			       kTRUE
			       );
    rhoTask->SetCentralityEstimator(CentEst);
 
  }
  TString wagonName = Form("DiJet_%s_%s_Rho%dTC%sMatch%dHadTrig%d",strJetsFull.Data(),strJetsCh.Data(),rhoType,trigClass.Data(),matchFullCh,(Int_t)(ptTrackBias));

  //Configure DiJet task
  AliAnalysisTaskEmcalDiJetAna *taskDiJet = NULL;
  taskDiJet = new AliAnalysisTaskEmcalDiJetAna(wagonName.Data());

  taskDiJet->SetUseAliAnaUtils(kTRUE);
  taskDiJet->SetVzRange(-10.,10.);
  taskDiJet->SetTriggerClass(trigClass.Data());

  if(ptminTrack==0.) {
    taskDiJet->SetIsPythia(kTRUE);
    taskDiJet->SetDoFullFull(kTRUE);
  }
  taskDiJet->SetJetCorrelationType(corrType);


  Printf("strJetsFull: %s",strJetsFull.Data());
  Printf("strJetsCh: %s",strJetsCh.Data());

  taskDiJet->AddParticleContainer(kTracksName.Data());
  taskDiJet->AddClusterContainer(kClusName.Data());
   
  taskDiJet->SetContainerFull(0);
  taskDiJet->SetContainerCharged(1);
  taskDiJet->AddJetContainer(strJetsFull.Data(),"EMCAL",R);
  taskDiJet->AddJetContainer(strJetsCh.Data(),"TPC",R);

  taskDiJet->SetZLeadingCut(0.98,0.98,0);
  taskDiJet->SetNEFCut(0.,nefCut,0);

  for(Int_t i=0; i<2; i++) {
    taskDiJet->SetPercAreaCut(0.6, i);
    taskDiJet->SetPtBiasJetTrack(ptTrackBias,i);
  }

  taskDiJet->SetRhoType(rhoType);
  if(rhoType==1) {
    taskDiJet->SetRhoName(rhoTask->GetOutRhoScaledName(),0);
    taskDiJet->SetRhoName(rhoTask->GetOutRhoName(),1);
  }

  taskDiJet->SetCentralityEstimator(CentEst);
  taskDiJet->SetCentRange(0.,100.);
  taskDiJet->SetNCentBins(nCentBins);

  taskDiJet->SelectCollisionCandidates(pSel);

  taskDiJet->SetFullChargedMatchingType(matchFullCh);

  taskDiJet->SetDoChargedCharged(kTRUE);
  taskDiJet->SetDoFullCharged(kTRUE);
  taskDiJet->SetMatchFullCharged(kFALSE);

  mgr->AddTask(taskDiJet);

  //Connnect input
  mgr->ConnectInput (taskDiJet, 0, mgr->GetCommonInputContainer() );

  //Connect output
  AliAnalysisDataContainer *coutput1 = 0x0;

  TString contName(wagonName);
  contName += "_histos";

  //  TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
  TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());

  coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);

  mgr->ConnectOutput(taskDiJet,1,coutput1);
  
  return taskDiJet;
}
 AddTaskEmcalDiJetAna.C:1
 AddTaskEmcalDiJetAna.C:2
 AddTaskEmcalDiJetAna.C:3
 AddTaskEmcalDiJetAna.C:4
 AddTaskEmcalDiJetAna.C:5
 AddTaskEmcalDiJetAna.C:6
 AddTaskEmcalDiJetAna.C:7
 AddTaskEmcalDiJetAna.C:8
 AddTaskEmcalDiJetAna.C:9
 AddTaskEmcalDiJetAna.C:10
 AddTaskEmcalDiJetAna.C:11
 AddTaskEmcalDiJetAna.C:12
 AddTaskEmcalDiJetAna.C:13
 AddTaskEmcalDiJetAna.C:14
 AddTaskEmcalDiJetAna.C:15
 AddTaskEmcalDiJetAna.C:16
 AddTaskEmcalDiJetAna.C:17
 AddTaskEmcalDiJetAna.C:18
 AddTaskEmcalDiJetAna.C:19
 AddTaskEmcalDiJetAna.C:20
 AddTaskEmcalDiJetAna.C:21
 AddTaskEmcalDiJetAna.C:22
 AddTaskEmcalDiJetAna.C:23
 AddTaskEmcalDiJetAna.C:24
 AddTaskEmcalDiJetAna.C:25
 AddTaskEmcalDiJetAna.C:26
 AddTaskEmcalDiJetAna.C:27
 AddTaskEmcalDiJetAna.C:28
 AddTaskEmcalDiJetAna.C:29
 AddTaskEmcalDiJetAna.C:30
 AddTaskEmcalDiJetAna.C:31
 AddTaskEmcalDiJetAna.C:32
 AddTaskEmcalDiJetAna.C:33
 AddTaskEmcalDiJetAna.C:34
 AddTaskEmcalDiJetAna.C:35
 AddTaskEmcalDiJetAna.C:36
 AddTaskEmcalDiJetAna.C:37
 AddTaskEmcalDiJetAna.C:38
 AddTaskEmcalDiJetAna.C:39
 AddTaskEmcalDiJetAna.C:40
 AddTaskEmcalDiJetAna.C:41
 AddTaskEmcalDiJetAna.C:42
 AddTaskEmcalDiJetAna.C:43
 AddTaskEmcalDiJetAna.C:44
 AddTaskEmcalDiJetAna.C:45
 AddTaskEmcalDiJetAna.C:46
 AddTaskEmcalDiJetAna.C:47
 AddTaskEmcalDiJetAna.C:48
 AddTaskEmcalDiJetAna.C:49
 AddTaskEmcalDiJetAna.C:50
 AddTaskEmcalDiJetAna.C:51
 AddTaskEmcalDiJetAna.C:52
 AddTaskEmcalDiJetAna.C:53
 AddTaskEmcalDiJetAna.C:54
 AddTaskEmcalDiJetAna.C:55
 AddTaskEmcalDiJetAna.C:56
 AddTaskEmcalDiJetAna.C:57
 AddTaskEmcalDiJetAna.C:58
 AddTaskEmcalDiJetAna.C:59
 AddTaskEmcalDiJetAna.C:60
 AddTaskEmcalDiJetAna.C:61
 AddTaskEmcalDiJetAna.C:62
 AddTaskEmcalDiJetAna.C:63
 AddTaskEmcalDiJetAna.C:64
 AddTaskEmcalDiJetAna.C:65
 AddTaskEmcalDiJetAna.C:66
 AddTaskEmcalDiJetAna.C:67
 AddTaskEmcalDiJetAna.C:68
 AddTaskEmcalDiJetAna.C:69
 AddTaskEmcalDiJetAna.C:70
 AddTaskEmcalDiJetAna.C:71
 AddTaskEmcalDiJetAna.C:72
 AddTaskEmcalDiJetAna.C:73
 AddTaskEmcalDiJetAna.C:74
 AddTaskEmcalDiJetAna.C:75
 AddTaskEmcalDiJetAna.C:76
 AddTaskEmcalDiJetAna.C:77
 AddTaskEmcalDiJetAna.C:78
 AddTaskEmcalDiJetAna.C:79
 AddTaskEmcalDiJetAna.C:80
 AddTaskEmcalDiJetAna.C:81
 AddTaskEmcalDiJetAna.C:82
 AddTaskEmcalDiJetAna.C:83
 AddTaskEmcalDiJetAna.C:84
 AddTaskEmcalDiJetAna.C:85
 AddTaskEmcalDiJetAna.C:86
 AddTaskEmcalDiJetAna.C:87
 AddTaskEmcalDiJetAna.C:88
 AddTaskEmcalDiJetAna.C:89
 AddTaskEmcalDiJetAna.C:90
 AddTaskEmcalDiJetAna.C:91
 AddTaskEmcalDiJetAna.C:92
 AddTaskEmcalDiJetAna.C:93
 AddTaskEmcalDiJetAna.C:94
 AddTaskEmcalDiJetAna.C:95
 AddTaskEmcalDiJetAna.C:96
 AddTaskEmcalDiJetAna.C:97
 AddTaskEmcalDiJetAna.C:98
 AddTaskEmcalDiJetAna.C:99
 AddTaskEmcalDiJetAna.C:100
 AddTaskEmcalDiJetAna.C:101
 AddTaskEmcalDiJetAna.C:102
 AddTaskEmcalDiJetAna.C:103
 AddTaskEmcalDiJetAna.C:104
 AddTaskEmcalDiJetAna.C:105
 AddTaskEmcalDiJetAna.C:106
 AddTaskEmcalDiJetAna.C:107
 AddTaskEmcalDiJetAna.C:108
 AddTaskEmcalDiJetAna.C:109
 AddTaskEmcalDiJetAna.C:110
 AddTaskEmcalDiJetAna.C:111
 AddTaskEmcalDiJetAna.C:112
 AddTaskEmcalDiJetAna.C:113
 AddTaskEmcalDiJetAna.C:114
 AddTaskEmcalDiJetAna.C:115
 AddTaskEmcalDiJetAna.C:116
 AddTaskEmcalDiJetAna.C:117
 AddTaskEmcalDiJetAna.C:118
 AddTaskEmcalDiJetAna.C:119
 AddTaskEmcalDiJetAna.C:120
 AddTaskEmcalDiJetAna.C:121
 AddTaskEmcalDiJetAna.C:122
 AddTaskEmcalDiJetAna.C:123
 AddTaskEmcalDiJetAna.C:124
 AddTaskEmcalDiJetAna.C:125
 AddTaskEmcalDiJetAna.C:126
 AddTaskEmcalDiJetAna.C:127
 AddTaskEmcalDiJetAna.C:128
 AddTaskEmcalDiJetAna.C:129
 AddTaskEmcalDiJetAna.C:130
 AddTaskEmcalDiJetAna.C:131
 AddTaskEmcalDiJetAna.C:132
 AddTaskEmcalDiJetAna.C:133
 AddTaskEmcalDiJetAna.C:134
 AddTaskEmcalDiJetAna.C:135
 AddTaskEmcalDiJetAna.C:136
 AddTaskEmcalDiJetAna.C:137
 AddTaskEmcalDiJetAna.C:138
 AddTaskEmcalDiJetAna.C:139
 AddTaskEmcalDiJetAna.C:140
 AddTaskEmcalDiJetAna.C:141
 AddTaskEmcalDiJetAna.C:142
 AddTaskEmcalDiJetAna.C:143
 AddTaskEmcalDiJetAna.C:144
 AddTaskEmcalDiJetAna.C:145
 AddTaskEmcalDiJetAna.C:146
 AddTaskEmcalDiJetAna.C:147
 AddTaskEmcalDiJetAna.C:148
 AddTaskEmcalDiJetAna.C:149
 AddTaskEmcalDiJetAna.C:150
 AddTaskEmcalDiJetAna.C:151
 AddTaskEmcalDiJetAna.C:152
 AddTaskEmcalDiJetAna.C:153
 AddTaskEmcalDiJetAna.C:154
 AddTaskEmcalDiJetAna.C:155