ROOT logo
AliAnalysisTaskMinijet* AddTaskMinijet(Int_t runNumber     =    -1, 
				       TString format      = "aod",
				       Bool_t  useMC       = false, 
				       Bool_t  mcOnly      = false,
				       Bool_t  useHighMult = false,
				       Float_t ptTrigMin   =   0.7,
				       Float_t ptAssocMin  =   0.4,
				       Float_t maxVtxZ     =   10.,
				       Int_t   filterBit   =    96,
				       Int_t   debugLevel  =     0,
				       Float_t maxEta      =   0.9,
				       Float_t ptMin       =   0.2,
				       Float_t ptMax       =  50.0,
				       Bool_t  checkSDD    = false,
				       Int_t   checkOption =     1,
				       Bool_t  onlyPrim    = true,
				       Bool_t  corrStrange = true,
				       Bool_t  threePart   = false,
				       Bool_t  rejectChunk = false,
				       Int_t   nTPC        = 5,
				       const char *foldername = "MiniJets")
{
  
  // Get the pointer to the existing analysis manager via the static access method
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) mgr = new AliAnalysisManager("Analysis train");

  // Set TPC track cuts (used for ESDs) 
  AliESDtrackCuts* esdTrackCutsTPC=0x0;
  if(!format.CompareTo("esd")){
    esdTrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
    esdTrackCutsTPC->SetMinNClustersTPC(80);
  }

  // First task for min bias events
  AliAnalysisTaskMinijet *taskMB = 
    new AliAnalysisTaskMinijet("AliAnalysisTaskMinijet Min bias");
  taskMB->SetUseMC(useMC,mcOnly);
  taskMB->SetTriggerPtCut(ptTrigMin);
  taskMB->SetAssociatePtCut(ptAssocMin);
  taskMB->SetMaxEta(maxEta);
  taskMB->SetPtRange(ptMin, ptMax);
  taskMB->SetMaxVertexZ(maxVtxZ);
  taskMB->SetTriggerMask(AliVEvent::kMB);
  // taskMB->SelectCollisionCandidates(AliVEvent::kMB);//MB  //now inside task
  taskMB->SetFilterBit(filterBit); // used only in AOD case
  taskMB->SetCheckSDD(checkSDD, checkOption);
  taskMB->SetCorrStrangeness(corrStrange);
  taskMB->SetThreeParticleCorrelation(threePart);
  taskMB->SetRejectCorrupted(rejectChunk, nTPC);
  taskMB->SetDebugLevel(debugLevel);

  //use this only for correction map plots -> Split contmaintion and rec efficiency
  taskMB->SetAnalyseOnlyPrimaries(onlyPrim);
 
  if(!format.CompareTo("esd")){
    taskMB->SetCuts(esdTrackCutsTPC);
    taskMB->SetModeEsdAod(0); // 0 = reading ESDs
  }  
  else if (!format.CompareTo("aod")){
    // Cuts already applied through esd filter
    taskMB->SetModeEsdAod(1); // 1 = reading AODs
  }

  // Second task for high multipliciy events
  AliAnalysisTaskMinijet *taskHM =0x0;
  if(useHighMult){
    taskHM  = new AliAnalysisTaskMinijet("AliAnalysisTaskMinijet HighMult");
    taskHM->SetUseMC(useMC, mcOnly);
    taskHM->SetTriggerPtCut(ptTrigMin);
    taskHM->SetAssociatePtCut(ptAssocMin);
    taskHM->SetMaxEta(maxEta);
    taskHM->SetPtRange(ptMin, ptMax);
    taskHM->SetMaxVertexZ(maxVtxZ);
    taskHM->SetTriggerMask(AliVEvent::kHighMult);
    //taskHM->SelectCollisionCandidates(AliVEvent::kHighMult); // now inside task
    taskHM->SetFilterBit(filterBit); // used only in AOD case
    taskHM->SetCheckSDD(checkSDD, checkOption);
    taskHM->SetCorrStrangeness(corrStrange);
    taskHM->SetThreeParticleCorrelation(threePart);
    taskHM->SetRejectCorrupted(rejectChunk, nTPC);
    taskHM->SetDebugLevel(debugLevel);

    if(!format.CompareTo("esd")){
      taskHM->SetCuts(esdTrackCutsTPC);
      taskHM->SetModeEsdAod(0); // 0 = reading ESDs
    }
    else if (!format.CompareTo("aod")){
      //cuts already applied through esd filter during writing of AODs
      taskHM->SetModeEsdAod(1); // 1 = reading AODs
    }
    
  }

  //create output containers 
  AliAnalysisDataContainer *outputMB  = 0x0;
  AliAnalysisDataContainer *outputHM = 0x0;

  if(runNumber>0){ 
    outputMB  =  mgr->CreateContainer(foldername,TList::Class(),
				      AliAnalysisManager::kOutputContainer, 
				      Form("run%d.root",runNumber));
    if(useHighMult){
      outputHM =  mgr->CreateContainer("MiniJets_HighMult",TList::Class(),
				       AliAnalysisManager::kOutputContainer, 
				       Form("run%d.root",runNumber));
    }
  }
  else{
    outputMB  = mgr->CreateContainer(foldername,TList::Class(),
				     AliAnalysisManager::kOutputContainer, 
				     Form("%s:PWG4_MiniJets",
					  AliAnalysisManager::GetCommonFileName()));
    if(useHighMult){
      outputHM = mgr->CreateContainer("MiniJets_HighMult",TList::Class(),
				      AliAnalysisManager::kOutputContainer, 
				      Form("%s:PWG4_MiniJets",
					   AliAnalysisManager::GetCommonFileName()));
    }
  }
  

  // Add first task to the manager and connect container
  mgr->AddTask(taskMB);
  mgr->ConnectInput(taskMB, 0,  mgr->GetCommonInputContainer());
  mgr->ConnectOutput(taskMB, 1, outputMB);
  
  
  // Add second task to the manager and connect container
  if(useHighMult){
    mgr->AddTask(taskHM);
    mgr->ConnectInput (taskHM, 0,  mgr->GetCommonInputContainer());
    mgr->ConnectOutput(taskHM, 1, outputHM);
  }
  
  return taskMB;

}

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