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: 
// 0. AliPerformanceTPC (TPC cluster and track and event information)
// 1. AliPerformanceMatch (TPC and ITS/TRD matching and TPC eff w.r.t ITS)
// 2. AliPerformanceMatch (TPC and ITS/TRD matching and TPC eff w.r.t TPC)
// 3. AliPerformancedEdx (TPC dEdx information)
// 4. AliPerformanceRes (TPC track resolution w.r.t MC at DCA)
// 5. AliPerformanceEff (TPC track reconstruction efficiency, MC primaries)
// 6. AliPerformanceMatch (Comparison of TPC constrain and global tracking)
//
// 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/AddTaskPerformanceTPCdEdxQA.C");
// AliPerformanceTask *tpcQA = AddTaskPerformanceTPCdEdxQA("kFALSE","kTRUE","kFALSE","triggerClass",kFALSE); 
// 
// 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
//22.09.2011 -  jochen@thaeder.de - Updated
///////////////////////////////////////////////////////////////////////////////

//____________________________________________
AliPerformanceTask* AddTaskPerformanceTPCdEdxQA(Bool_t bUseMCInfo=kFALSE, Bool_t bUseESDfriend=kTRUE, 
						Bool_t highMult = kFALSE, const char *triggerClass=0, 
						Bool_t bUseHLT = kFALSE, Bool_t bUseTOF = kFALSE, Bool_t bTPCOnly = kFALSE,
						Bool_t bDoEffTpcSec = kFALSE)
{
  Char_t *taskName[] = {"TPC", "HLT"};
  Int_t idx = 0;
  if (bUseHLT) idx = 1;
  
  //
  // Add AliPerformanceTask with TPC performance components
  //
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if(!mgr) { 
    Error("AddTaskPerformanceTPCdEdxQA","AliAnalysisManager not set!");
    return NULL;
  }
  
  TString type = mgr->GetInputEventHandler()->GetDataType();
  if (!type.Contains("ESD")) {
    Error("AddTaskPerformanceTPCdEdxQA", "ESD input handler needed!");
    return NULL;
  }
  
  AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
  if (!mcH && bUseMCInfo) {
    Error("AddTaskPerformanceTPCdEdxQA", "MC input handler needed!");
    return NULL;
  }

  //
  // Add HLT Event
  //
  if (bUseHLT) {
    AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*>(mgr->GetInputEventHandler());
    esdH->SetReadHLT();
  }

  //
  // Create task
  //
  AliPerformanceTask *task = new AliPerformanceTask("PerformanceQA",Form("%s Performance",taskName[idx]));
  if (!task) {
    Error("AddTaskPerformanceTPCdEdxQA", Form("%s performance task cannot be created!",taskName[idx]));
    return NULL;
  }
  task->SetUseMCInfo(bUseMCInfo);
  task->SetUseESDfriend(bUseESDfriend);
  //  task->SetUseTerminate(kFALSE);
  task->SetUseHLT(bUseHLT);

  //
  // 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(kFALSE);
    pRecInfoCutsTPC->SetMinNClustersTPC(70);
    pRecInfoCutsTPC->SetMaxChi2PerClusterTPC(4.);
    pRecInfoCutsTPC->SetDCAToVertex2D(kTRUE);

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

  //
  // Create TPC-MC track reconstruction cuts
  //
  AliMCInfoCuts  *pMCInfoCuts = new AliMCInfoCuts();
  if(pMCInfoCuts) {
    pMCInfoCuts->SetMinTrackLength(70);
  } 
  else {
    Error("AddTaskPerformanceTPCdEdxQA", "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 = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",kTPC,kFALSE,-1,highMult); 
  if(!pCompTPC0) {
    Error("AddTaskPerformanceTPCdEdxQA", "Cannot create AliPerformanceTPC");
  }
  pCompTPC0->SetAliRecInfoCuts(pRecInfoCutsTPC);
  pCompTPC0->SetAliMCInfoCuts(pMCInfoCuts);
  //  pCompTPC0->SetUseTrackVertex(kFALSE);
  pCompTPC0->SetUseTrackVertex(kTRUE);
  pCompTPC0->SetUseHLT(bUseHLT);
  pCompTPC0->SetUseTOFBunchCrossing(bUseTOF);
  
  //
  // TPC ITS match
  //
  AliPerformanceMatch *pCompMatch1 = new AliPerformanceMatch("AliPerformanceMatchTPCITS","AliPerformanceMatchTPCITS",0,kFALSE); 
  if(!pCompMatch1) {
    Error("AddTaskPerformanceTPCdEdxQA", "Cannot create AliPerformanceMatchTPCITS");
  }
  pCompMatch1->SetAliRecInfoCuts(pRecInfoCutsTPC);
  pCompMatch1->SetAliMCInfoCuts(pMCInfoCuts);
  pCompMatch1->SetUseTOFBunchCrossing(bUseTOF);


  //
  // ITS TPC match
  //
  AliPerformanceMatch *pCompMatch2 = new AliPerformanceMatch("AliPerformanceMatchITSTPC","AliPerformanceMatchITSTPC",1,kFALSE); 
  if(!pCompMatch2) {
    Error("AddTaskPerformanceTPCdEdxQA", "Cannot create AliPerformanceMatchITSTPC");  }
  pCompMatch2->SetAliRecInfoCuts(pRecInfoCutsTPC);
  pCompMatch2->SetAliMCInfoCuts(pMCInfoCuts);
  pCompMatch2->SetUseTOFBunchCrossing(bUseTOF);

  //
  // dEdx
  //
  AliPerformanceDEdx *pCompDEdx3 = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner","AliPerformanceDEdxTPCInner",kTPCInner,kFALSE); 
  if(!pCompDEdx3) {
    Error("AddTaskPerformanceTPCdEdxQA", "Cannot create AliPerformanceDEdxTPCInner");
  }
  pCompDEdx3->SetAliRecInfoCuts(pRecInfoCutsTPC);
  pCompDEdx3->SetAliMCInfoCuts(pMCInfoCuts);
  //pCompDEdx3->SetUseTrackVertex(kFALSE);
  pCompDEdx3->SetUseTrackVertex(kTRUE);

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

  AliPerformanceRes *pCompRes4 = new AliPerformanceRes("AliPerformanceRes",
						       "AliPerformanceRes", bTPCOnly == kTRUE ? kTPCInner : kTPC,kFALSE); 
  if(!pCompRes4) {
    Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceRes");
  }


  pCompRes4->SetAliRecInfoCuts(pRecInfoCutsTPC);
  pCompRes4->SetAliMCInfoCuts(pMCInfoCuts);
  pCompRes4->SetUseTrackVertex(bTPCOnly == kTRUE ? kFALSE : kTRUE);

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

  AliPerformanceEff *pCompEff5 = new AliPerformanceEff("AliPerformanceEff",
						       "AliPerformanceEff",kTPC,kFALSE); 
  if(!pCompEff5) {
    Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceEff");
  }

  pCompEff5->SetAliRecInfoCuts(pRecInfoCutsTPC);
  pCompEff5->SetAliMCInfoCuts(pMCInfoCuts);
  pCompEff5->SetUseTrackVertex(bTPCOnly == kTRUE ? kFALSE : kTRUE);

  AliPerformanceEff *pCompEff5Sec;
  if (bDoEffTpcSec)
  {
	  pCompEff5Sec = new AliPerformanceEff("AliPerformanceEffSec",
						       "AliPerformanceEffSec",kTPCSec,kFALSE); 
	  if(!pCompEff5Sec) {
		  Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceEff");
	  }

	  pCompEff5Sec->SetAliRecInfoCuts(pRecInfoCutsTPC);
	  pCompEff5Sec->SetAliMCInfoCuts(pMCInfoCuts);
	  pCompEff5Sec->SetUseTrackVertex(bTPCOnly == kTRUE ? kFALSE : kTRUE);
  }

  //
  // TPC Constrain to vertex
  //
  AliPerformanceMatch *pCompConstrain6 = new AliPerformanceMatch("AliPerformanceMatchTPCConstrain","AliPerformanceMatchTPCConstrain",2,kFALSE); 
  if(!pCompConstrain6) {
    Error("AddTaskPerformanceTPCdEdxQA", "Cannot create AliPerformanceMatchTPCConstrain");  }
  pCompConstrain6->SetAliRecInfoCuts(pRecInfoCutsTPC);
  pCompConstrain6->SetAliMCInfoCuts(pMCInfoCuts);
  pCompConstrain6->SetUseTOFBunchCrossing(bUseTOF);



  //
  // Add components to the performance task
  //
  if(!bUseMCInfo) { 
    pCompTPC0->SetTriggerClass(triggerClass);
    pCompMatch1->SetTriggerClass(triggerClass);
    pCompMatch2->SetTriggerClass(triggerClass);
    pCompDEdx3->SetTriggerClass(triggerClass);
    pCompConstrain6->SetTriggerClass(triggerClass);
  }
  task->AddPerformanceObject( pCompTPC0 );
  task->AddPerformanceObject( pCompMatch1 );
  task->AddPerformanceObject( pCompMatch2 );
  task->AddPerformanceObject( pCompDEdx3 );
  task->AddPerformanceObject( pCompConstrain6 );
  if(bUseMCInfo)   {
      task->AddPerformanceObject( pCompRes4 );
      task->AddPerformanceObject( pCompEff5 );
	  if (bDoEffTpcSec) task->AddPerformanceObject( pCompEff5Sec );
  }

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

  //
  // Create containers for output
  //
   
  AliAnalysisDataContainer *coutput = mgr->CreateContainer(Form("%sQA", taskName[idx]), TList::Class(), 
							   AliAnalysisManager::kOutputContainer, 
							   Form("%s:%s_%s", mgr->GetCommonFileName(), taskName[idx],task->GetName()));


  AliAnalysisDataContainer *coutput2  = mgr->CreateContainer(Form("%sQASummary", taskName[idx]), TTree::Class(), 
							     AliAnalysisManager::kParamContainer, 
							     Form("trending.root:Summary%sQA", taskName[idx])); 
  
  mgr->ConnectOutput(task, 1, coutput);
  mgr->ConnectOutput(task, 0, coutput2);

return task;  
}
 AddTaskPerformanceTPCdEdxQA.C:1
 AddTaskPerformanceTPCdEdxQA.C:2
 AddTaskPerformanceTPCdEdxQA.C:3
 AddTaskPerformanceTPCdEdxQA.C:4
 AddTaskPerformanceTPCdEdxQA.C:5
 AddTaskPerformanceTPCdEdxQA.C:6
 AddTaskPerformanceTPCdEdxQA.C:7
 AddTaskPerformanceTPCdEdxQA.C:8
 AddTaskPerformanceTPCdEdxQA.C:9
 AddTaskPerformanceTPCdEdxQA.C:10
 AddTaskPerformanceTPCdEdxQA.C:11
 AddTaskPerformanceTPCdEdxQA.C:12
 AddTaskPerformanceTPCdEdxQA.C:13
 AddTaskPerformanceTPCdEdxQA.C:14
 AddTaskPerformanceTPCdEdxQA.C:15
 AddTaskPerformanceTPCdEdxQA.C:16
 AddTaskPerformanceTPCdEdxQA.C:17
 AddTaskPerformanceTPCdEdxQA.C:18
 AddTaskPerformanceTPCdEdxQA.C:19
 AddTaskPerformanceTPCdEdxQA.C:20
 AddTaskPerformanceTPCdEdxQA.C:21
 AddTaskPerformanceTPCdEdxQA.C:22
 AddTaskPerformanceTPCdEdxQA.C:23
 AddTaskPerformanceTPCdEdxQA.C:24
 AddTaskPerformanceTPCdEdxQA.C:25
 AddTaskPerformanceTPCdEdxQA.C:26
 AddTaskPerformanceTPCdEdxQA.C:27
 AddTaskPerformanceTPCdEdxQA.C:28
 AddTaskPerformanceTPCdEdxQA.C:29
 AddTaskPerformanceTPCdEdxQA.C:30
 AddTaskPerformanceTPCdEdxQA.C:31
 AddTaskPerformanceTPCdEdxQA.C:32
 AddTaskPerformanceTPCdEdxQA.C:33
 AddTaskPerformanceTPCdEdxQA.C:34
 AddTaskPerformanceTPCdEdxQA.C:35
 AddTaskPerformanceTPCdEdxQA.C:36
 AddTaskPerformanceTPCdEdxQA.C:37
 AddTaskPerformanceTPCdEdxQA.C:38
 AddTaskPerformanceTPCdEdxQA.C:39
 AddTaskPerformanceTPCdEdxQA.C:40
 AddTaskPerformanceTPCdEdxQA.C:41
 AddTaskPerformanceTPCdEdxQA.C:42
 AddTaskPerformanceTPCdEdxQA.C:43
 AddTaskPerformanceTPCdEdxQA.C:44
 AddTaskPerformanceTPCdEdxQA.C:45
 AddTaskPerformanceTPCdEdxQA.C:46
 AddTaskPerformanceTPCdEdxQA.C:47
 AddTaskPerformanceTPCdEdxQA.C:48
 AddTaskPerformanceTPCdEdxQA.C:49
 AddTaskPerformanceTPCdEdxQA.C:50
 AddTaskPerformanceTPCdEdxQA.C:51
 AddTaskPerformanceTPCdEdxQA.C:52
 AddTaskPerformanceTPCdEdxQA.C:53
 AddTaskPerformanceTPCdEdxQA.C:54
 AddTaskPerformanceTPCdEdxQA.C:55
 AddTaskPerformanceTPCdEdxQA.C:56
 AddTaskPerformanceTPCdEdxQA.C:57
 AddTaskPerformanceTPCdEdxQA.C:58
 AddTaskPerformanceTPCdEdxQA.C:59
 AddTaskPerformanceTPCdEdxQA.C:60
 AddTaskPerformanceTPCdEdxQA.C:61
 AddTaskPerformanceTPCdEdxQA.C:62
 AddTaskPerformanceTPCdEdxQA.C:63
 AddTaskPerformanceTPCdEdxQA.C:64
 AddTaskPerformanceTPCdEdxQA.C:65
 AddTaskPerformanceTPCdEdxQA.C:66
 AddTaskPerformanceTPCdEdxQA.C:67
 AddTaskPerformanceTPCdEdxQA.C:68
 AddTaskPerformanceTPCdEdxQA.C:69
 AddTaskPerformanceTPCdEdxQA.C:70
 AddTaskPerformanceTPCdEdxQA.C:71
 AddTaskPerformanceTPCdEdxQA.C:72
 AddTaskPerformanceTPCdEdxQA.C:73
 AddTaskPerformanceTPCdEdxQA.C:74
 AddTaskPerformanceTPCdEdxQA.C:75
 AddTaskPerformanceTPCdEdxQA.C:76
 AddTaskPerformanceTPCdEdxQA.C:77
 AddTaskPerformanceTPCdEdxQA.C:78
 AddTaskPerformanceTPCdEdxQA.C:79
 AddTaskPerformanceTPCdEdxQA.C:80
 AddTaskPerformanceTPCdEdxQA.C:81
 AddTaskPerformanceTPCdEdxQA.C:82
 AddTaskPerformanceTPCdEdxQA.C:83
 AddTaskPerformanceTPCdEdxQA.C:84
 AddTaskPerformanceTPCdEdxQA.C:85
 AddTaskPerformanceTPCdEdxQA.C:86
 AddTaskPerformanceTPCdEdxQA.C:87
 AddTaskPerformanceTPCdEdxQA.C:88
 AddTaskPerformanceTPCdEdxQA.C:89
 AddTaskPerformanceTPCdEdxQA.C:90
 AddTaskPerformanceTPCdEdxQA.C:91
 AddTaskPerformanceTPCdEdxQA.C:92
 AddTaskPerformanceTPCdEdxQA.C:93
 AddTaskPerformanceTPCdEdxQA.C:94
 AddTaskPerformanceTPCdEdxQA.C:95
 AddTaskPerformanceTPCdEdxQA.C:96
 AddTaskPerformanceTPCdEdxQA.C:97
 AddTaskPerformanceTPCdEdxQA.C:98
 AddTaskPerformanceTPCdEdxQA.C:99
 AddTaskPerformanceTPCdEdxQA.C:100
 AddTaskPerformanceTPCdEdxQA.C:101
 AddTaskPerformanceTPCdEdxQA.C:102
 AddTaskPerformanceTPCdEdxQA.C:103
 AddTaskPerformanceTPCdEdxQA.C:104
 AddTaskPerformanceTPCdEdxQA.C:105
 AddTaskPerformanceTPCdEdxQA.C:106
 AddTaskPerformanceTPCdEdxQA.C:107
 AddTaskPerformanceTPCdEdxQA.C:108
 AddTaskPerformanceTPCdEdxQA.C:109
 AddTaskPerformanceTPCdEdxQA.C:110
 AddTaskPerformanceTPCdEdxQA.C:111
 AddTaskPerformanceTPCdEdxQA.C:112
 AddTaskPerformanceTPCdEdxQA.C:113
 AddTaskPerformanceTPCdEdxQA.C:114
 AddTaskPerformanceTPCdEdxQA.C:115
 AddTaskPerformanceTPCdEdxQA.C:116
 AddTaskPerformanceTPCdEdxQA.C:117
 AddTaskPerformanceTPCdEdxQA.C:118
 AddTaskPerformanceTPCdEdxQA.C:119
 AddTaskPerformanceTPCdEdxQA.C:120
 AddTaskPerformanceTPCdEdxQA.C:121
 AddTaskPerformanceTPCdEdxQA.C:122
 AddTaskPerformanceTPCdEdxQA.C:123
 AddTaskPerformanceTPCdEdxQA.C:124
 AddTaskPerformanceTPCdEdxQA.C:125
 AddTaskPerformanceTPCdEdxQA.C:126
 AddTaskPerformanceTPCdEdxQA.C:127
 AddTaskPerformanceTPCdEdxQA.C:128
 AddTaskPerformanceTPCdEdxQA.C:129
 AddTaskPerformanceTPCdEdxQA.C:130
 AddTaskPerformanceTPCdEdxQA.C:131
 AddTaskPerformanceTPCdEdxQA.C:132
 AddTaskPerformanceTPCdEdxQA.C:133
 AddTaskPerformanceTPCdEdxQA.C:134
 AddTaskPerformanceTPCdEdxQA.C:135
 AddTaskPerformanceTPCdEdxQA.C:136
 AddTaskPerformanceTPCdEdxQA.C:137
 AddTaskPerformanceTPCdEdxQA.C:138
 AddTaskPerformanceTPCdEdxQA.C:139
 AddTaskPerformanceTPCdEdxQA.C:140
 AddTaskPerformanceTPCdEdxQA.C:141
 AddTaskPerformanceTPCdEdxQA.C:142
 AddTaskPerformanceTPCdEdxQA.C:143
 AddTaskPerformanceTPCdEdxQA.C:144
 AddTaskPerformanceTPCdEdxQA.C:145
 AddTaskPerformanceTPCdEdxQA.C:146
 AddTaskPerformanceTPCdEdxQA.C:147
 AddTaskPerformanceTPCdEdxQA.C:148
 AddTaskPerformanceTPCdEdxQA.C:149
 AddTaskPerformanceTPCdEdxQA.C:150
 AddTaskPerformanceTPCdEdxQA.C:151
 AddTaskPerformanceTPCdEdxQA.C:152
 AddTaskPerformanceTPCdEdxQA.C:153
 AddTaskPerformanceTPCdEdxQA.C:154
 AddTaskPerformanceTPCdEdxQA.C:155
 AddTaskPerformanceTPCdEdxQA.C:156
 AddTaskPerformanceTPCdEdxQA.C:157
 AddTaskPerformanceTPCdEdxQA.C:158
 AddTaskPerformanceTPCdEdxQA.C:159
 AddTaskPerformanceTPCdEdxQA.C:160
 AddTaskPerformanceTPCdEdxQA.C:161
 AddTaskPerformanceTPCdEdxQA.C:162
 AddTaskPerformanceTPCdEdxQA.C:163
 AddTaskPerformanceTPCdEdxQA.C:164
 AddTaskPerformanceTPCdEdxQA.C:165
 AddTaskPerformanceTPCdEdxQA.C:166
 AddTaskPerformanceTPCdEdxQA.C:167
 AddTaskPerformanceTPCdEdxQA.C:168
 AddTaskPerformanceTPCdEdxQA.C:169
 AddTaskPerformanceTPCdEdxQA.C:170
 AddTaskPerformanceTPCdEdxQA.C:171
 AddTaskPerformanceTPCdEdxQA.C:172
 AddTaskPerformanceTPCdEdxQA.C:173
 AddTaskPerformanceTPCdEdxQA.C:174
 AddTaskPerformanceTPCdEdxQA.C:175
 AddTaskPerformanceTPCdEdxQA.C:176
 AddTaskPerformanceTPCdEdxQA.C:177
 AddTaskPerformanceTPCdEdxQA.C:178
 AddTaskPerformanceTPCdEdxQA.C:179
 AddTaskPerformanceTPCdEdxQA.C:180
 AddTaskPerformanceTPCdEdxQA.C:181
 AddTaskPerformanceTPCdEdxQA.C:182
 AddTaskPerformanceTPCdEdxQA.C:183
 AddTaskPerformanceTPCdEdxQA.C:184
 AddTaskPerformanceTPCdEdxQA.C:185
 AddTaskPerformanceTPCdEdxQA.C:186
 AddTaskPerformanceTPCdEdxQA.C:187
 AddTaskPerformanceTPCdEdxQA.C:188
 AddTaskPerformanceTPCdEdxQA.C:189
 AddTaskPerformanceTPCdEdxQA.C:190
 AddTaskPerformanceTPCdEdxQA.C:191
 AddTaskPerformanceTPCdEdxQA.C:192
 AddTaskPerformanceTPCdEdxQA.C:193
 AddTaskPerformanceTPCdEdxQA.C:194
 AddTaskPerformanceTPCdEdxQA.C:195
 AddTaskPerformanceTPCdEdxQA.C:196
 AddTaskPerformanceTPCdEdxQA.C:197
 AddTaskPerformanceTPCdEdxQA.C:198
 AddTaskPerformanceTPCdEdxQA.C:199
 AddTaskPerformanceTPCdEdxQA.C:200
 AddTaskPerformanceTPCdEdxQA.C:201
 AddTaskPerformanceTPCdEdxQA.C:202
 AddTaskPerformanceTPCdEdxQA.C:203
 AddTaskPerformanceTPCdEdxQA.C:204
 AddTaskPerformanceTPCdEdxQA.C:205
 AddTaskPerformanceTPCdEdxQA.C:206
 AddTaskPerformanceTPCdEdxQA.C:207
 AddTaskPerformanceTPCdEdxQA.C:208
 AddTaskPerformanceTPCdEdxQA.C:209
 AddTaskPerformanceTPCdEdxQA.C:210
 AddTaskPerformanceTPCdEdxQA.C:211
 AddTaskPerformanceTPCdEdxQA.C:212
 AddTaskPerformanceTPCdEdxQA.C:213
 AddTaskPerformanceTPCdEdxQA.C:214
 AddTaskPerformanceTPCdEdxQA.C:215
 AddTaskPerformanceTPCdEdxQA.C:216
 AddTaskPerformanceTPCdEdxQA.C:217
 AddTaskPerformanceTPCdEdxQA.C:218
 AddTaskPerformanceTPCdEdxQA.C:219
 AddTaskPerformanceTPCdEdxQA.C:220
 AddTaskPerformanceTPCdEdxQA.C:221
 AddTaskPerformanceTPCdEdxQA.C:222
 AddTaskPerformanceTPCdEdxQA.C:223
 AddTaskPerformanceTPCdEdxQA.C:224
 AddTaskPerformanceTPCdEdxQA.C:225
 AddTaskPerformanceTPCdEdxQA.C:226
 AddTaskPerformanceTPCdEdxQA.C:227
 AddTaskPerformanceTPCdEdxQA.C:228
 AddTaskPerformanceTPCdEdxQA.C:229
 AddTaskPerformanceTPCdEdxQA.C:230
 AddTaskPerformanceTPCdEdxQA.C:231
 AddTaskPerformanceTPCdEdxQA.C:232
 AddTaskPerformanceTPCdEdxQA.C:233
 AddTaskPerformanceTPCdEdxQA.C:234
 AddTaskPerformanceTPCdEdxQA.C:235
 AddTaskPerformanceTPCdEdxQA.C:236
 AddTaskPerformanceTPCdEdxQA.C:237
 AddTaskPerformanceTPCdEdxQA.C:238
 AddTaskPerformanceTPCdEdxQA.C:239
 AddTaskPerformanceTPCdEdxQA.C:240
 AddTaskPerformanceTPCdEdxQA.C:241
 AddTaskPerformanceTPCdEdxQA.C:242
 AddTaskPerformanceTPCdEdxQA.C:243
 AddTaskPerformanceTPCdEdxQA.C:244
 AddTaskPerformanceTPCdEdxQA.C:245
 AddTaskPerformanceTPCdEdxQA.C:246
 AddTaskPerformanceTPCdEdxQA.C:247
 AddTaskPerformanceTPCdEdxQA.C:248
 AddTaskPerformanceTPCdEdxQA.C:249
 AddTaskPerformanceTPCdEdxQA.C:250
 AddTaskPerformanceTPCdEdxQA.C:251
 AddTaskPerformanceTPCdEdxQA.C:252
 AddTaskPerformanceTPCdEdxQA.C:253
 AddTaskPerformanceTPCdEdxQA.C:254
 AddTaskPerformanceTPCdEdxQA.C:255
 AddTaskPerformanceTPCdEdxQA.C:256
 AddTaskPerformanceTPCdEdxQA.C:257
 AddTaskPerformanceTPCdEdxQA.C:258
 AddTaskPerformanceTPCdEdxQA.C:259
 AddTaskPerformanceTPCdEdxQA.C:260
 AddTaskPerformanceTPCdEdxQA.C:261
 AddTaskPerformanceTPCdEdxQA.C:262
 AddTaskPerformanceTPCdEdxQA.C:263
 AddTaskPerformanceTPCdEdxQA.C:264
 AddTaskPerformanceTPCdEdxQA.C:265
 AddTaskPerformanceTPCdEdxQA.C:266
 AddTaskPerformanceTPCdEdxQA.C:267
 AddTaskPerformanceTPCdEdxQA.C:268
 AddTaskPerformanceTPCdEdxQA.C:269
 AddTaskPerformanceTPCdEdxQA.C:270
 AddTaskPerformanceTPCdEdxQA.C:271
 AddTaskPerformanceTPCdEdxQA.C:272
 AddTaskPerformanceTPCdEdxQA.C:273
 AddTaskPerformanceTPCdEdxQA.C:274
 AddTaskPerformanceTPCdEdxQA.C:275
 AddTaskPerformanceTPCdEdxQA.C:276
 AddTaskPerformanceTPCdEdxQA.C:277
 AddTaskPerformanceTPCdEdxQA.C:278
 AddTaskPerformanceTPCdEdxQA.C:279
 AddTaskPerformanceTPCdEdxQA.C:280
 AddTaskPerformanceTPCdEdxQA.C:281
 AddTaskPerformanceTPCdEdxQA.C:282
 AddTaskPerformanceTPCdEdxQA.C:283