ROOT logo
///////////////////////////////////////////////////////////////////////////////
// Macro to setup AliPerformanceTask for 
// TPC performance QA to run on PWGPP QA train. 
//
// Input: ESDs, ESDfriends (optional), Kinematics (optional), TrackRefs (optional)
// ESD and MC input handlers must be attached to AliAnalysisManager
// to run default configuration. 
//
// By default 1 performance components are added to 
// the task: 
// 1. AliPerformanceTPC (TPC cluster and track and event information)
// 2. AliPerformancedEdx (TPC dEdx information)
//
// Usage on the analysis train (default configuration):
// gSystem->Load("libANALYSIS");
// gSystem->Load("libANALYSISalice");
// gSystem->Load("libTPCcalib.so");
// gSystem->Load("libTENDER.so");
// gSystem->Load("libPWGPP.so");
//
// gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/AddTaskPerformanceTPCPbPb.C");
// AliPerformanceTask *tpcQA = AddTaskPerformanceTPCPbPb("kFALSE","kTRUE","triggerClass"); 
// 
// Output:
// TPC.Performance.root file with TPC performance components is created.
//
// Each of the components contains THnSparse generic histograms which 
// have to be analysed (post-analysis) by using Analyse() function. 
// Each component contains such function.
//
//30.09.2010 -  J.Otwinowski@gsi.de
///////////////////////////////////////////////////////////////////////////////

//____________________________________________
AliPerformanceTask* AddTaskPerformanceTPCPbPb(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("AddTaskPerformanceTPCPbPb","AliAnalysisManager not set!");
    return NULL;
  }
  
  TString type = mgr->GetInputEventHandler()->GetDataType();
  if (!type.Contains("ESD")) {
    Error("AddTaskPerformanceTPCPbPb", "ESD input handler needed!");
    return NULL;
  }
  
  AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
  if (!mcH && bUseMCInfo) {
    Error("AddTaskPerformanceTPCPbPb", "MC input handler needed!");
    return NULL;
  }

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

  task->SetUseTerminate(kFALSE);

  task->SetUseCentrality(1); // 0=off,1=Vzero,2=SPD
  Int_t cent0 = 0;
  Int_t cent1 = 20;
  Int_t cent2 = 40;

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

  //
  // Create TPC-ESD track reconstruction cuts
  // MB tracks
  //
  AliRecInfoCuts *pRecInfoCutsTPC = new AliRecInfoCuts(); 
  if(pRecInfoCutsTPC) {
    pRecInfoCutsTPC->SetMaxDCAToVertexXY(3.0);
    pRecInfoCutsTPC->SetMaxDCAToVertexZ(3.0);
    pRecInfoCutsTPC->SetRequireSigmaToVertex(kFALSE);
    pRecInfoCutsTPC->SetRequireTPCRefit(kFALSE);
    pRecInfoCutsTPC->SetAcceptKinkDaughters(kTRUE);
    pRecInfoCutsTPC->SetMinNClustersTPC(70);
    pRecInfoCutsTPC->SetMaxChi2PerClusterTPC(1000000.);
    pRecInfoCutsTPC->SetDCAToVertex2D(kFALSE);

    pRecInfoCutsTPC->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 
  //
  enum { kTPC = 0, kTPCITS, kConstrained, kTPCInner, kTPCOuter, kTPCSec };

  //
  // TPC performance  ------------------------------------------------------------------------------------
  //
  
  AliPerformanceTPC *pCompTPC0 = NULL;
  AliPerformanceTPC *pCompTPCc0 = NULL;
  AliPerformanceTPC *pCompTPCc1 = NULL;
  AliPerformanceTPC *pCompTPCc2 = NULL;

  if( !task->GetUseCentrality() ) {
    
    pCompTPC0 = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",kTPC,kFALSE); 
    if(!pCompTPC0) {
      Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceTPC");
    }
    pCompTPC0->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompTPC0->SetAliMCInfoCuts(pMCInfoCuts);
    pCompTPC0->SetUseTrackVertex(kFALSE);
    pCompTPC0->SetUseHLT(kFALSE);
  }
  else {
    pCompTPCc0 = new AliPerformanceTPC("AliPerformanceTPC",Form("AliPerformanceTPC_cent_%d",cent0),kTPC,kFALSE); 
    if(!pCompTPCc0) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent0), "Cannot create AliPerformanceTPC");
    }
    pCompTPCc0->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompTPCc0->SetAliMCInfoCuts(pMCInfoCuts);
    pCompTPCc0->SetUseTrackVertex(kFALSE);
    pCompTPCc0->SetUseHLT(kFALSE);
    pCompTPCc0->SetUseCentralityBin(cent0);

    pCompTPCc1 = new AliPerformanceTPC("AliPerformanceTPC",Form("AliPerformanceTPC_cent_%d",cent1),kTPC,kFALSE); 
    if(!pCompTPCc1) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent1), "Cannot create AliPerformanceTPC");
    }
    pCompTPCc1->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompTPCc1->SetAliMCInfoCuts(pMCInfoCuts);
    pCompTPCc1->SetUseTrackVertex(kFALSE);
    pCompTPCc1->SetUseHLT(kFALSE);
    pCompTPCc1->SetUseCentralityBin(cent1);

    pCompTPCc2 = new AliPerformanceTPC("AliPerformanceTPC",Form("AliPerformanceTPC_cent_%d",cent2),kTPC,kFALSE); 
    if(!pCompTPCc2) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent2), "Cannot create AliPerformanceTPC");
    }
    pCompTPCc2->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompTPCc2->SetAliMCInfoCuts(pMCInfoCuts);
    pCompTPCc2->SetUseTrackVertex(kFALSE);
    pCompTPCc2->SetUseHLT(kFALSE);
    pCompTPCc2->SetUseCentralityBin(cent2);
  }
  
  //
  // dEdx ------------------------------------------------------------------------------------
  //

  AliPerformanceDEdx *pCompDEdx0 = NULL;
  AliPerformanceDEdx *pCompDEdxc0 = NULL;
  AliPerformanceDEdx *pCompDEdxc1 = NULL;
  AliPerformanceDEdx *pCompDEdxc2 = NULL;

  if( !task->GetUseCentrality() ) {
    pCompDEdx0 = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner","AliPerformanceDEdxTPCInner",kTPCInner,kFALSE); 
    if(!pCompDEdx0) {
      Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceDEdxTPCInner");
    }
    pCompDEdx0->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompDEdx0->SetAliMCInfoCuts(pMCInfoCuts);
    pCompDEdx0->SetUseTrackVertex(kFALSE);
  }
  else {
    pCompDEdxc0 = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner",
					 Form("AliPerformanceDEdxTPCInner_cent_%d",cent0),kTPCInner,kFALSE); 
    if(!pCompDEdxc0) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent0), "Cannot create AliPerformanceDEdxTPCInner");
    }
    pCompDEdxc0->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompDEdxc0->SetAliMCInfoCuts(pMCInfoCuts);
    pCompDEdxc0->SetUseTrackVertex(kFALSE);   
    pCompDEdxc0->SetUseCentralityBin(cent0);

    pCompDEdxc1 = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner",
					 Form("AliPerformanceDEdxTPCInner_cent_%d",cent1),kTPCInner,kFALSE); 
    if(!pCompDEdxc1) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent1), "Cannot create AliPerformanceDEdxTPCInner");
    }
    pCompDEdxc1->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompDEdxc1->SetAliMCInfoCuts(pMCInfoCuts);
    pCompDEdxc1->SetUseTrackVertex(kFALSE);   
    pCompDEdxc1->SetUseCentralityBin(cent1);

    pCompDEdxc2 = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner",
					 Form("AliPerformanceDEdxTPCInner_cent_%d",cent2),kTPCInner,kFALSE); 
    if(!pCompDEdxc2) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent2), "Cannot create AliPerformanceDEdxTPCInner");
    }
    pCompDEdxc2->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompDEdxc2->SetAliMCInfoCuts(pMCInfoCuts);
    pCompDEdxc2->SetUseTrackVertex(kFALSE);
    pCompDEdxc2->SetUseCentralityBin(cent2);  
  }

  //
  // Efficiency ------------------------------------------------------------------------------------
  //

  AliPerformanceEff *pCompEff0  = NULL;
  AliPerformanceEff *pCompEffc0 = NULL;
  AliPerformanceEff *pCompEffc1 = NULL;
  AliPerformanceEff *pCompEffc2 = NULL;

  if( !task->GetUseCentrality() ) {
    pCompEff0 = new AliPerformanceEff("AliPerformanceEff", "AliPerformanceEff",kTPC,kFALSE); 
    if(!pCompEff0) {
      Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceEff");
    }
    pCompEff0->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompEff0->SetAliMCInfoCuts(pMCInfoCuts);
    pCompEff0->SetUseTrackVertex(kFALSE);
    pCompEff0->InitHighMult();
  }
  else {
    pCompEffc0 = new AliPerformanceEff("AliPerformanceEff", Form("AliPerformanceEff_cent_%d",cent0),kTPC,kFALSE); 
    if(!pCompEffc0) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent0), "Cannot create AliPerformanceEff");
    }
    pCompEffc0->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompEffc0->SetAliMCInfoCuts(pMCInfoCuts);
    pCompEffc0->SetUseTrackVertex(kFALSE);
    pCompEffc0->InitHighMult();
    pCompEffc0->SetUseCentralityBin(cent0);  

    pCompEffc1 = new AliPerformanceEff("AliPerformanceEff", Form("AliPerformanceEff_cent_%d",cent1),kTPC,kFALSE); 
    if(!pCompEffc1) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent1), "Cannot create AliPerformanceEff");
    }
    pCompEffc1->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompEffc1->SetAliMCInfoCuts(pMCInfoCuts);
    pCompEffc1->SetUseTrackVertex(kFALSE);
    pCompEffc1->InitHighMult();
    pCompEffc1->SetUseCentralityBin(cent1);  

    pCompEffc2 = new AliPerformanceEff("AliPerformanceEff", Form("AliPerformanceEff_cent_%d",cent2),kTPC,kFALSE); 
    if(!pCompEffc2) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent2), "Cannot create AliPerformanceEff");
    }
    pCompEffc2->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompEffc2->SetAliMCInfoCuts(pMCInfoCuts);
    pCompEffc2->SetUseTrackVertex(kFALSE);
    pCompEffc2->InitHighMult();
    pCompEffc2->SetUseCentralityBin(cent2);  
  }

  //
  // Resolution ------------------------------------------------------------------------------------
  //

  AliPerformanceRes *pCompRes0 = NULL;
  AliPerformanceRes *pCompResc0 = NULL;
  AliPerformanceRes *pCompResc1 = NULL;
  AliPerformanceRes *pCompResc2 = NULL;

  if( !task->GetUseCentrality() ) {
    pCompRes0 = new AliPerformanceRes("AliPerformanceRes", "AliPerformanceRes",kTPC,kFALSE); 
    if(!pCompRes0) {
      Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceRes");
    }
    pCompRes0->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompRes0->SetAliMCInfoCuts(pMCInfoCuts);
    pCompRes0->SetUseTrackVertex(kFALSE);
    pCompRes0->InitHighMult();
  }
  else {
    pCompResc0 = new AliPerformanceRes("AliPerformanceRes", Form("AliPerformanceRes_cent_%d",cent0), kTPC, kFALSE); 
    if(!pCompResc0) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent0), "Cannot create AliPerformanceRes");
    }
    pCompResc0->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompResc0->SetAliMCInfoCuts(pMCInfoCuts);
    pCompResc0->SetUseTrackVertex(kFALSE);
    pCompResc0->InitHighMult();
    pCompResc0->SetUseCentralityBin(cent0); 

    pCompResc1 = new AliPerformanceRes("AliPerformanceRes", Form("AliPerformanceRes_cent_%d",cent1), kTPC, kFALSE); 
    if(!pCompResc1) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent1), "Cannot create AliPerformanceRes");
    }
    pCompResc1->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompResc1->SetAliMCInfoCuts(pMCInfoCuts);
    pCompResc1->SetUseTrackVertex(kFALSE);
    pCompResc1->InitHighMult();
    pCompResc1->SetUseCentralityBin(cent1); 


    pCompResc2 = new AliPerformanceRes("AliPerformanceRes", Form("AliPerformanceRes_cent_%d",cent2), kTPC, kFALSE); 
    if(!pCompResc2) {
      Error(Form("AddTaskPerformanceTPC_cent_%d",cent2), "Cannot create AliPerformanceRes");
    }
    pCompResc2->SetAliRecInfoCuts(pRecInfoCutsTPC);
    pCompResc2->SetAliMCInfoCuts(pMCInfoCuts);
    pCompResc2->SetUseTrackVertex(kFALSE);
    pCompResc2->InitHighMult();
    pCompResc2->SetUseCentralityBin(cent2); 
  }

  // ----------------------------------------------------------------------------------------------------------------------------
  
  //
  // Add components to the performance task  ------------------------------------------------------------------------------------
  //
  if( !task->GetUseCentrality() ) {
    task->AddPerformanceObject( pCompTPC0 );
    task->AddPerformanceObject( pCompDEdx0 );
    task->AddPerformanceObject( pCompEff0 );
    task->AddPerformanceObject( pCompRes0 );

    if(!bUseMCInfo) { 
      pCompTPC0->SetTriggerClass(triggerClass);
      pCompDEdx0->SetTriggerClass(triggerClass);
      pCompEff0->SetTriggerClass(triggerClass);
      pCompRes0->SetTriggerClass(triggerClass);
    }
  }
  else {
    task->AddPerformanceObject( pCompTPCc0 );
    task->AddPerformanceObject( pCompTPCc1 );
    task->AddPerformanceObject( pCompTPCc2 );
    task->AddPerformanceObject( pCompDEdxc0 );
    task->AddPerformanceObject( pCompDEdxc1 );
    task->AddPerformanceObject( pCompDEdxc2 );
    task->AddPerformanceObject( pCompEffc0 );
    task->AddPerformanceObject( pCompEffc1 );
    task->AddPerformanceObject( pCompEffc2 );
    task->AddPerformanceObject( pCompResc0 );
    task->AddPerformanceObject( pCompResc1 );
    task->AddPerformanceObject( pCompResc2 );

    if(!bUseMCInfo) { 
      pCompTPCc0->SetTriggerClass(triggerClass);
      pCompDEdxc0->SetTriggerClass(triggerClass);
      pCompTPCc1->SetTriggerClass(triggerClass);
      pCompDEdxc1->SetTriggerClass(triggerClass);
      pCompTPCc2->SetTriggerClass(triggerClass);
      pCompDEdxc2->SetTriggerClass(triggerClass);
      pCompEffc0->SetTriggerClass(triggerClass);
      pCompEffc1->SetTriggerClass(triggerClass);
      pCompEffc2->SetTriggerClass(triggerClass);
      pCompResc0->SetTriggerClass(triggerClass);
      pCompResc1->SetTriggerClass(triggerClass);
      pCompResc2->SetTriggerClass(triggerClass);
    }
  }

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

  //
  // Create containers for output
  //
  AliAnalysisDataContainer *coutput_tpc = mgr->CreateContainer("TPCQA", TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TPC_%s", mgr->GetCommonFileName(), task->GetName()));

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

  mgr->ConnectOutput(task, 1, coutput_tpc);
  mgr->ConnectOutput(task, 2, coutput2_tpc);

return task;  
}
 AddTaskPerformanceTPCPbPb.C:1
 AddTaskPerformanceTPCPbPb.C:2
 AddTaskPerformanceTPCPbPb.C:3
 AddTaskPerformanceTPCPbPb.C:4
 AddTaskPerformanceTPCPbPb.C:5
 AddTaskPerformanceTPCPbPb.C:6
 AddTaskPerformanceTPCPbPb.C:7
 AddTaskPerformanceTPCPbPb.C:8
 AddTaskPerformanceTPCPbPb.C:9
 AddTaskPerformanceTPCPbPb.C:10
 AddTaskPerformanceTPCPbPb.C:11
 AddTaskPerformanceTPCPbPb.C:12
 AddTaskPerformanceTPCPbPb.C:13
 AddTaskPerformanceTPCPbPb.C:14
 AddTaskPerformanceTPCPbPb.C:15
 AddTaskPerformanceTPCPbPb.C:16
 AddTaskPerformanceTPCPbPb.C:17
 AddTaskPerformanceTPCPbPb.C:18
 AddTaskPerformanceTPCPbPb.C:19
 AddTaskPerformanceTPCPbPb.C:20
 AddTaskPerformanceTPCPbPb.C:21
 AddTaskPerformanceTPCPbPb.C:22
 AddTaskPerformanceTPCPbPb.C:23
 AddTaskPerformanceTPCPbPb.C:24
 AddTaskPerformanceTPCPbPb.C:25
 AddTaskPerformanceTPCPbPb.C:26
 AddTaskPerformanceTPCPbPb.C:27
 AddTaskPerformanceTPCPbPb.C:28
 AddTaskPerformanceTPCPbPb.C:29
 AddTaskPerformanceTPCPbPb.C:30
 AddTaskPerformanceTPCPbPb.C:31
 AddTaskPerformanceTPCPbPb.C:32
 AddTaskPerformanceTPCPbPb.C:33
 AddTaskPerformanceTPCPbPb.C:34
 AddTaskPerformanceTPCPbPb.C:35
 AddTaskPerformanceTPCPbPb.C:36
 AddTaskPerformanceTPCPbPb.C:37
 AddTaskPerformanceTPCPbPb.C:38
 AddTaskPerformanceTPCPbPb.C:39
 AddTaskPerformanceTPCPbPb.C:40
 AddTaskPerformanceTPCPbPb.C:41
 AddTaskPerformanceTPCPbPb.C:42
 AddTaskPerformanceTPCPbPb.C:43
 AddTaskPerformanceTPCPbPb.C:44
 AddTaskPerformanceTPCPbPb.C:45
 AddTaskPerformanceTPCPbPb.C:46
 AddTaskPerformanceTPCPbPb.C:47
 AddTaskPerformanceTPCPbPb.C:48
 AddTaskPerformanceTPCPbPb.C:49
 AddTaskPerformanceTPCPbPb.C:50
 AddTaskPerformanceTPCPbPb.C:51
 AddTaskPerformanceTPCPbPb.C:52
 AddTaskPerformanceTPCPbPb.C:53
 AddTaskPerformanceTPCPbPb.C:54
 AddTaskPerformanceTPCPbPb.C:55
 AddTaskPerformanceTPCPbPb.C:56
 AddTaskPerformanceTPCPbPb.C:57
 AddTaskPerformanceTPCPbPb.C:58
 AddTaskPerformanceTPCPbPb.C:59
 AddTaskPerformanceTPCPbPb.C:60
 AddTaskPerformanceTPCPbPb.C:61
 AddTaskPerformanceTPCPbPb.C:62
 AddTaskPerformanceTPCPbPb.C:63
 AddTaskPerformanceTPCPbPb.C:64
 AddTaskPerformanceTPCPbPb.C:65
 AddTaskPerformanceTPCPbPb.C:66
 AddTaskPerformanceTPCPbPb.C:67
 AddTaskPerformanceTPCPbPb.C:68
 AddTaskPerformanceTPCPbPb.C:69
 AddTaskPerformanceTPCPbPb.C:70
 AddTaskPerformanceTPCPbPb.C:71
 AddTaskPerformanceTPCPbPb.C:72
 AddTaskPerformanceTPCPbPb.C:73
 AddTaskPerformanceTPCPbPb.C:74
 AddTaskPerformanceTPCPbPb.C:75
 AddTaskPerformanceTPCPbPb.C:76
 AddTaskPerformanceTPCPbPb.C:77
 AddTaskPerformanceTPCPbPb.C:78
 AddTaskPerformanceTPCPbPb.C:79
 AddTaskPerformanceTPCPbPb.C:80
 AddTaskPerformanceTPCPbPb.C:81
 AddTaskPerformanceTPCPbPb.C:82
 AddTaskPerformanceTPCPbPb.C:83
 AddTaskPerformanceTPCPbPb.C:84
 AddTaskPerformanceTPCPbPb.C:85
 AddTaskPerformanceTPCPbPb.C:86
 AddTaskPerformanceTPCPbPb.C:87
 AddTaskPerformanceTPCPbPb.C:88
 AddTaskPerformanceTPCPbPb.C:89
 AddTaskPerformanceTPCPbPb.C:90
 AddTaskPerformanceTPCPbPb.C:91
 AddTaskPerformanceTPCPbPb.C:92
 AddTaskPerformanceTPCPbPb.C:93
 AddTaskPerformanceTPCPbPb.C:94
 AddTaskPerformanceTPCPbPb.C:95
 AddTaskPerformanceTPCPbPb.C:96
 AddTaskPerformanceTPCPbPb.C:97
 AddTaskPerformanceTPCPbPb.C:98
 AddTaskPerformanceTPCPbPb.C:99
 AddTaskPerformanceTPCPbPb.C:100
 AddTaskPerformanceTPCPbPb.C:101
 AddTaskPerformanceTPCPbPb.C:102
 AddTaskPerformanceTPCPbPb.C:103
 AddTaskPerformanceTPCPbPb.C:104
 AddTaskPerformanceTPCPbPb.C:105
 AddTaskPerformanceTPCPbPb.C:106
 AddTaskPerformanceTPCPbPb.C:107
 AddTaskPerformanceTPCPbPb.C:108
 AddTaskPerformanceTPCPbPb.C:109
 AddTaskPerformanceTPCPbPb.C:110
 AddTaskPerformanceTPCPbPb.C:111
 AddTaskPerformanceTPCPbPb.C:112
 AddTaskPerformanceTPCPbPb.C:113
 AddTaskPerformanceTPCPbPb.C:114
 AddTaskPerformanceTPCPbPb.C:115
 AddTaskPerformanceTPCPbPb.C:116
 AddTaskPerformanceTPCPbPb.C:117
 AddTaskPerformanceTPCPbPb.C:118
 AddTaskPerformanceTPCPbPb.C:119
 AddTaskPerformanceTPCPbPb.C:120
 AddTaskPerformanceTPCPbPb.C:121
 AddTaskPerformanceTPCPbPb.C:122
 AddTaskPerformanceTPCPbPb.C:123
 AddTaskPerformanceTPCPbPb.C:124
 AddTaskPerformanceTPCPbPb.C:125
 AddTaskPerformanceTPCPbPb.C:126
 AddTaskPerformanceTPCPbPb.C:127
 AddTaskPerformanceTPCPbPb.C:128
 AddTaskPerformanceTPCPbPb.C:129
 AddTaskPerformanceTPCPbPb.C:130
 AddTaskPerformanceTPCPbPb.C:131
 AddTaskPerformanceTPCPbPb.C:132
 AddTaskPerformanceTPCPbPb.C:133
 AddTaskPerformanceTPCPbPb.C:134
 AddTaskPerformanceTPCPbPb.C:135
 AddTaskPerformanceTPCPbPb.C:136
 AddTaskPerformanceTPCPbPb.C:137
 AddTaskPerformanceTPCPbPb.C:138
 AddTaskPerformanceTPCPbPb.C:139
 AddTaskPerformanceTPCPbPb.C:140
 AddTaskPerformanceTPCPbPb.C:141
 AddTaskPerformanceTPCPbPb.C:142
 AddTaskPerformanceTPCPbPb.C:143
 AddTaskPerformanceTPCPbPb.C:144
 AddTaskPerformanceTPCPbPb.C:145
 AddTaskPerformanceTPCPbPb.C:146
 AddTaskPerformanceTPCPbPb.C:147
 AddTaskPerformanceTPCPbPb.C:148
 AddTaskPerformanceTPCPbPb.C:149
 AddTaskPerformanceTPCPbPb.C:150
 AddTaskPerformanceTPCPbPb.C:151
 AddTaskPerformanceTPCPbPb.C:152
 AddTaskPerformanceTPCPbPb.C:153
 AddTaskPerformanceTPCPbPb.C:154
 AddTaskPerformanceTPCPbPb.C:155
 AddTaskPerformanceTPCPbPb.C:156
 AddTaskPerformanceTPCPbPb.C:157
 AddTaskPerformanceTPCPbPb.C:158
 AddTaskPerformanceTPCPbPb.C:159
 AddTaskPerformanceTPCPbPb.C:160
 AddTaskPerformanceTPCPbPb.C:161
 AddTaskPerformanceTPCPbPb.C:162
 AddTaskPerformanceTPCPbPb.C:163
 AddTaskPerformanceTPCPbPb.C:164
 AddTaskPerformanceTPCPbPb.C:165
 AddTaskPerformanceTPCPbPb.C:166
 AddTaskPerformanceTPCPbPb.C:167
 AddTaskPerformanceTPCPbPb.C:168
 AddTaskPerformanceTPCPbPb.C:169
 AddTaskPerformanceTPCPbPb.C:170
 AddTaskPerformanceTPCPbPb.C:171
 AddTaskPerformanceTPCPbPb.C:172
 AddTaskPerformanceTPCPbPb.C:173
 AddTaskPerformanceTPCPbPb.C:174
 AddTaskPerformanceTPCPbPb.C:175
 AddTaskPerformanceTPCPbPb.C:176
 AddTaskPerformanceTPCPbPb.C:177
 AddTaskPerformanceTPCPbPb.C:178
 AddTaskPerformanceTPCPbPb.C:179
 AddTaskPerformanceTPCPbPb.C:180
 AddTaskPerformanceTPCPbPb.C:181
 AddTaskPerformanceTPCPbPb.C:182
 AddTaskPerformanceTPCPbPb.C:183
 AddTaskPerformanceTPCPbPb.C:184
 AddTaskPerformanceTPCPbPb.C:185
 AddTaskPerformanceTPCPbPb.C:186
 AddTaskPerformanceTPCPbPb.C:187
 AddTaskPerformanceTPCPbPb.C:188
 AddTaskPerformanceTPCPbPb.C:189
 AddTaskPerformanceTPCPbPb.C:190
 AddTaskPerformanceTPCPbPb.C:191
 AddTaskPerformanceTPCPbPb.C:192
 AddTaskPerformanceTPCPbPb.C:193
 AddTaskPerformanceTPCPbPb.C:194
 AddTaskPerformanceTPCPbPb.C:195
 AddTaskPerformanceTPCPbPb.C:196
 AddTaskPerformanceTPCPbPb.C:197
 AddTaskPerformanceTPCPbPb.C:198
 AddTaskPerformanceTPCPbPb.C:199
 AddTaskPerformanceTPCPbPb.C:200
 AddTaskPerformanceTPCPbPb.C:201
 AddTaskPerformanceTPCPbPb.C:202
 AddTaskPerformanceTPCPbPb.C:203
 AddTaskPerformanceTPCPbPb.C:204
 AddTaskPerformanceTPCPbPb.C:205
 AddTaskPerformanceTPCPbPb.C:206
 AddTaskPerformanceTPCPbPb.C:207
 AddTaskPerformanceTPCPbPb.C:208
 AddTaskPerformanceTPCPbPb.C:209
 AddTaskPerformanceTPCPbPb.C:210
 AddTaskPerformanceTPCPbPb.C:211
 AddTaskPerformanceTPCPbPb.C:212
 AddTaskPerformanceTPCPbPb.C:213
 AddTaskPerformanceTPCPbPb.C:214
 AddTaskPerformanceTPCPbPb.C:215
 AddTaskPerformanceTPCPbPb.C:216
 AddTaskPerformanceTPCPbPb.C:217
 AddTaskPerformanceTPCPbPb.C:218
 AddTaskPerformanceTPCPbPb.C:219
 AddTaskPerformanceTPCPbPb.C:220
 AddTaskPerformanceTPCPbPb.C:221
 AddTaskPerformanceTPCPbPb.C:222
 AddTaskPerformanceTPCPbPb.C:223
 AddTaskPerformanceTPCPbPb.C:224
 AddTaskPerformanceTPCPbPb.C:225
 AddTaskPerformanceTPCPbPb.C:226
 AddTaskPerformanceTPCPbPb.C:227
 AddTaskPerformanceTPCPbPb.C:228
 AddTaskPerformanceTPCPbPb.C:229
 AddTaskPerformanceTPCPbPb.C:230
 AddTaskPerformanceTPCPbPb.C:231
 AddTaskPerformanceTPCPbPb.C:232
 AddTaskPerformanceTPCPbPb.C:233
 AddTaskPerformanceTPCPbPb.C:234
 AddTaskPerformanceTPCPbPb.C:235
 AddTaskPerformanceTPCPbPb.C:236
 AddTaskPerformanceTPCPbPb.C:237
 AddTaskPerformanceTPCPbPb.C:238
 AddTaskPerformanceTPCPbPb.C:239
 AddTaskPerformanceTPCPbPb.C:240
 AddTaskPerformanceTPCPbPb.C:241
 AddTaskPerformanceTPCPbPb.C:242
 AddTaskPerformanceTPCPbPb.C:243
 AddTaskPerformanceTPCPbPb.C:244
 AddTaskPerformanceTPCPbPb.C:245
 AddTaskPerformanceTPCPbPb.C:246
 AddTaskPerformanceTPCPbPb.C:247
 AddTaskPerformanceTPCPbPb.C:248
 AddTaskPerformanceTPCPbPb.C:249
 AddTaskPerformanceTPCPbPb.C:250
 AddTaskPerformanceTPCPbPb.C:251
 AddTaskPerformanceTPCPbPb.C:252
 AddTaskPerformanceTPCPbPb.C:253
 AddTaskPerformanceTPCPbPb.C:254
 AddTaskPerformanceTPCPbPb.C:255
 AddTaskPerformanceTPCPbPb.C:256
 AddTaskPerformanceTPCPbPb.C:257
 AddTaskPerformanceTPCPbPb.C:258
 AddTaskPerformanceTPCPbPb.C:259
 AddTaskPerformanceTPCPbPb.C:260
 AddTaskPerformanceTPCPbPb.C:261
 AddTaskPerformanceTPCPbPb.C:262
 AddTaskPerformanceTPCPbPb.C:263
 AddTaskPerformanceTPCPbPb.C:264
 AddTaskPerformanceTPCPbPb.C:265
 AddTaskPerformanceTPCPbPb.C:266
 AddTaskPerformanceTPCPbPb.C:267
 AddTaskPerformanceTPCPbPb.C:268
 AddTaskPerformanceTPCPbPb.C:269
 AddTaskPerformanceTPCPbPb.C:270
 AddTaskPerformanceTPCPbPb.C:271
 AddTaskPerformanceTPCPbPb.C:272
 AddTaskPerformanceTPCPbPb.C:273
 AddTaskPerformanceTPCPbPb.C:274
 AddTaskPerformanceTPCPbPb.C:275
 AddTaskPerformanceTPCPbPb.C:276
 AddTaskPerformanceTPCPbPb.C:277
 AddTaskPerformanceTPCPbPb.C:278
 AddTaskPerformanceTPCPbPb.C:279
 AddTaskPerformanceTPCPbPb.C:280
 AddTaskPerformanceTPCPbPb.C:281
 AddTaskPerformanceTPCPbPb.C:282
 AddTaskPerformanceTPCPbPb.C:283
 AddTaskPerformanceTPCPbPb.C:284
 AddTaskPerformanceTPCPbPb.C:285
 AddTaskPerformanceTPCPbPb.C:286
 AddTaskPerformanceTPCPbPb.C:287
 AddTaskPerformanceTPCPbPb.C:288
 AddTaskPerformanceTPCPbPb.C:289
 AddTaskPerformanceTPCPbPb.C:290
 AddTaskPerformanceTPCPbPb.C:291
 AddTaskPerformanceTPCPbPb.C:292
 AddTaskPerformanceTPCPbPb.C:293
 AddTaskPerformanceTPCPbPb.C:294
 AddTaskPerformanceTPCPbPb.C:295
 AddTaskPerformanceTPCPbPb.C:296
 AddTaskPerformanceTPCPbPb.C:297
 AddTaskPerformanceTPCPbPb.C:298
 AddTaskPerformanceTPCPbPb.C:299
 AddTaskPerformanceTPCPbPb.C:300
 AddTaskPerformanceTPCPbPb.C:301
 AddTaskPerformanceTPCPbPb.C:302
 AddTaskPerformanceTPCPbPb.C:303
 AddTaskPerformanceTPCPbPb.C:304
 AddTaskPerformanceTPCPbPb.C:305
 AddTaskPerformanceTPCPbPb.C:306
 AddTaskPerformanceTPCPbPb.C:307
 AddTaskPerformanceTPCPbPb.C:308
 AddTaskPerformanceTPCPbPb.C:309
 AddTaskPerformanceTPCPbPb.C:310
 AddTaskPerformanceTPCPbPb.C:311
 AddTaskPerformanceTPCPbPb.C:312
 AddTaskPerformanceTPCPbPb.C:313
 AddTaskPerformanceTPCPbPb.C:314
 AddTaskPerformanceTPCPbPb.C:315
 AddTaskPerformanceTPCPbPb.C:316
 AddTaskPerformanceTPCPbPb.C:317
 AddTaskPerformanceTPCPbPb.C:318
 AddTaskPerformanceTPCPbPb.C:319
 AddTaskPerformanceTPCPbPb.C:320
 AddTaskPerformanceTPCPbPb.C:321
 AddTaskPerformanceTPCPbPb.C:322
 AddTaskPerformanceTPCPbPb.C:323
 AddTaskPerformanceTPCPbPb.C:324
 AddTaskPerformanceTPCPbPb.C:325
 AddTaskPerformanceTPCPbPb.C:326
 AddTaskPerformanceTPCPbPb.C:327
 AddTaskPerformanceTPCPbPb.C:328
 AddTaskPerformanceTPCPbPb.C:329
 AddTaskPerformanceTPCPbPb.C:330
 AddTaskPerformanceTPCPbPb.C:331
 AddTaskPerformanceTPCPbPb.C:332
 AddTaskPerformanceTPCPbPb.C:333
 AddTaskPerformanceTPCPbPb.C:334
 AddTaskPerformanceTPCPbPb.C:335
 AddTaskPerformanceTPCPbPb.C:336
 AddTaskPerformanceTPCPbPb.C:337
 AddTaskPerformanceTPCPbPb.C:338
 AddTaskPerformanceTPCPbPb.C:339
 AddTaskPerformanceTPCPbPb.C:340
 AddTaskPerformanceTPCPbPb.C:341
 AddTaskPerformanceTPCPbPb.C:342
 AddTaskPerformanceTPCPbPb.C:343
 AddTaskPerformanceTPCPbPb.C:344
 AddTaskPerformanceTPCPbPb.C:345
 AddTaskPerformanceTPCPbPb.C:346
 AddTaskPerformanceTPCPbPb.C:347
 AddTaskPerformanceTPCPbPb.C:348
 AddTaskPerformanceTPCPbPb.C:349
 AddTaskPerformanceTPCPbPb.C:350
 AddTaskPerformanceTPCPbPb.C:351
 AddTaskPerformanceTPCPbPb.C:352
 AddTaskPerformanceTPCPbPb.C:353
 AddTaskPerformanceTPCPbPb.C:354
 AddTaskPerformanceTPCPbPb.C:355
 AddTaskPerformanceTPCPbPb.C:356
 AddTaskPerformanceTPCPbPb.C:357
 AddTaskPerformanceTPCPbPb.C:358
 AddTaskPerformanceTPCPbPb.C:359
 AddTaskPerformanceTPCPbPb.C:360
 AddTaskPerformanceTPCPbPb.C:361
 AddTaskPerformanceTPCPbPb.C:362
 AddTaskPerformanceTPCPbPb.C:363
 AddTaskPerformanceTPCPbPb.C:364
 AddTaskPerformanceTPCPbPb.C:365
 AddTaskPerformanceTPCPbPb.C:366
 AddTaskPerformanceTPCPbPb.C:367
 AddTaskPerformanceTPCPbPb.C:368
 AddTaskPerformanceTPCPbPb.C:369
 AddTaskPerformanceTPCPbPb.C:370
 AddTaskPerformanceTPCPbPb.C:371
 AddTaskPerformanceTPCPbPb.C:372
 AddTaskPerformanceTPCPbPb.C:373
 AddTaskPerformanceTPCPbPb.C:374
 AddTaskPerformanceTPCPbPb.C:375
 AddTaskPerformanceTPCPbPb.C:376
 AddTaskPerformanceTPCPbPb.C:377
 AddTaskPerformanceTPCPbPb.C:378
 AddTaskPerformanceTPCPbPb.C:379
 AddTaskPerformanceTPCPbPb.C:380
 AddTaskPerformanceTPCPbPb.C:381
 AddTaskPerformanceTPCPbPb.C:382
 AddTaskPerformanceTPCPbPb.C:383
 AddTaskPerformanceTPCPbPb.C:384
 AddTaskPerformanceTPCPbPb.C:385
 AddTaskPerformanceTPCPbPb.C:386
 AddTaskPerformanceTPCPbPb.C:387
 AddTaskPerformanceTPCPbPb.C:388
 AddTaskPerformanceTPCPbPb.C:389
 AddTaskPerformanceTPCPbPb.C:390