ROOT logo
//____________________________________________
AliPerformanceTask* AddTaskPerformanceITSTPCMatch(Bool_t bUseMCInfo=kFALSE, Bool_t bUseESDfriend=kTRUE, const char *triggerClass=0)
{
  //
  // Add AliPerformanceTask with TPC performance components
  //
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if(!mgr) { 
    Error("AddTaskPerformanceTPC","AliAnalysisManager not set!");
    return NULL;
  }
  
  TString type = mgr->GetInputEventHandler()->GetDataType();
  if (!type.Contains("ESD")) {
    Error("AddTaskPerformanceTPC", "ESD input handler needed!");
    return NULL;
  }
  
  AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
  if (!mcH && bUseMCInfo) {
    Error("AddTaskPerformanceTPC", "MC input handler needed!");
    return NULL;
  }

  //
  // Create task
  //
  AliPerformanceTask *task = new AliPerformanceTask("Performance","TPC Performance");
  if (!task) {
    Error("AddTaskPerformanceTPC", "TPC performance task cannot be created!");
    return NULL;
  }
  task->SetUseMCInfo(bUseMCInfo);
  task->SetUseESDfriend(bUseESDfriend);
  task->SelectCollisionCandidates();

  //
  // Add task to analysis manager
  //
  mgr->AddTask(task);


  //
  // Create TPC-ESD track reconstruction cuts
  // MATCH tracks
  //
  AliRecInfoCuts *pRecInfoCutsMATCH = new AliRecInfoCuts(); 
  if(pRecInfoCutsMATCH) {
    pRecInfoCutsMATCH->SetMaxDCAToVertexXY(3.0);
    pRecInfoCutsMATCH->SetMaxDCAToVertexZ(3..0);
    pRecInfoCutsMATCH->SetRequireSigmaToVertex(kFALSE);
    pRecInfoCutsMATCH->SetRequireTPCRefit(kFALSE);
    pRecInfoCutsMATCH->SetAcceptKinkDaughters(kTRUE);
    pRecInfoCutsMATCH->SetMinNClustersTPC(70);
    pRecInfoCutsMATCH->SetMaxChi2PerClusterTPC(1000000.);
    pRecInfoCutsMATCH->SetDCAToVertex2D(kFALSE);
    pRecInfoCutsMATCH->SetTPCITSMatchingRadius(70); 
    pRecInfoCutsMATCH->SetTPCTRDMatchingRadius(260); 
    pRecInfoCutsMATCH->SetMinNClustersITS(3);

    pRecInfoCutsMATCH->SetHistogramsOn(kFALSE); 
  } 
  else {
    Error("AddTaskPerformanceTPC", "AliRecInfoCutsTPC cannot be created!");
    return NULL;
  }

  //
  // Create TPC-MC track reconstruction cuts
  //
  AliMCInfoCuts  *pMCInfoCuts = new AliMCInfoCuts();
  if(pMCInfoCuts) {
    pMCInfoCuts->SetMinTrackLength(70);
  } 
  else {
    Error("AddTaskPerformanceTPC", "AliMCInfoCuts cannot be created!");
    return NULL;
  }

  //
  // Create performance objects for TPC and set cuts 
  //
  // TPC+ITS matching performance
  //
  AliPerformanceMatch *pCompMatch0 = new AliPerformanceMatch("AliPerformanceMatchTPCITS","AliPerformanceMatchTPCITS",0,kFALSE); 
  if(!pCompMatch0) {
    Error("AddTaskPerformanceMatch", "Cannot create AliPerformanceMatchTPCITS");
  }
  pCompMatch0->SetAliRecInfoCuts(pRecInfoCutsMATCH);
  pCompMatch0->SetAliMCInfoCuts(pMCInfoCuts);
  //
  // TPC+TRD matching performance
  //
  AliPerformanceMatch *pCompMatch1 = new AliPerformanceMatch("AliPerformanceMatchTPCTRD","AliPerformanceMatchTPCTRD",1,kFALSE); 
  if(!pCompMatch1) {
    Error("AddTaskPerformanceMatch", "Cannot create AliPerformanceMatchTPCTRD");
  }
  pCompMatch1->SetAliRecInfoCuts(pRecInfoCutsMATCH);
  pCompMatch1->SetAliMCInfoCuts(pMCInfoCuts);
 
  AliPerformanceMatch *pCompMatch2 = new AliPerformanceMatch("AliPerformanceMatchTPCEFF","AliPerformanceMatchTPCEFF",2,kFALSE); 
  if(!pCompMatch2) {
    Error("AddTaskPerformanceMatch", "Cannot create AliPerformanceMatchTPCEFF");
  }
  pCompMatch2->SetAliRecInfoCuts(pRecInfoCutsMATCH);
  pCompMatch2->SetAliMCInfoCuts(pMCInfoCuts);

  //
  // Add components to the performance task
  //
  task->AddPerformanceObject( pCompMatch0 );
  //task->AddPerformanceObject( pCompMatch1 );
  task->AddPerformanceObject( pCompMatch2 );

  //
  if(!bUseMCInfo &&  triggerClass) {
    pCompDEdx3->SetTriggerClass(triggerClass);
    pCompDCA0->SetTriggerClass(triggerClass);
    pCompTPC0->SetTriggerClass(triggerClass);
    pCompMatch0->SetTriggerClass(triggerClass);
    pCompMatch1->SetTriggerClass(triggerClass);
    pCompMatch2->SetTriggerClass(triggerClass);
  }

  //
  // Create containers for input
  //
  mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());

  //
  // Create containers for output
  //
  AliAnalysisDataContainer *coutput_tpc = mgr->CreateContainer("ITSTPCMatch", TList::Class(), AliAnalysisManager::kOutputContainer, Form("TPC.%sDet.root", task->GetName()));
  mgr->ConnectOutput(task, 1, coutput_tpc);

  AliAnalysisDataContainer *coutput2_tpc = mgr->CreateContainer("TPCTPCMatchSummary", TTree::Class(), AliAnalysisManager::kParamContainer, "trending.root:SummaryTPCQA"); 
  mgr->ConnectOutput(task, 2, coutput2_tpc);

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