ROOT logo
AliAnalysisTaskQASym * AddTaskQAsym(Int_t runNumber, 
				    UInt_t maskMB,
				    UInt_t maskHM,
				    UInt_t maskEM,
				    UInt_t maskMU)

{
  // Creates a QA task exploiting simple symmetries phi, eta +/-, charge ...
  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskQAsym", "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("AddTasQAsym", "This task requires an input event handler");
    return NULL;
  }
   TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  
   // Configure analysis
   //===========================================================================
   
 
   //Task for global tracks
   AliAnalysisTaskQASym *task0 = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_Global");
   task0->SetTrackType(0);
   task0->SelectCollisionCandidates(maskMB); // default setting: kMB = min bias trigger
   task0->SetNChargedRange(30,50); // comparison of different trigger settings
   //Task for global tracks (high multiplicity)
   AliAnalysisTaskQASym *task0HM = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_Global_HighMult");
   task0HM->SetTrackType(0);
   task0HM->SelectCollisionCandidates(maskHM);
   task0HM->SetNChargedRange(30,50); 
   //Task for global tracks (EMCAL trigger)
   AliAnalysisTaskQASym *task0EM = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_Global_EMCAL");
   task0EM->SetTrackType(0);
   task0EM->SelectCollisionCandidates(maskEM); 
   task0EM->SetNChargedRange(30,50);
   //Task for global tracks (Muon trigger)
   AliAnalysisTaskQASym *task0MU = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_Global_MUON");
   task0MU->SetTrackType(0);
   task0MU->SelectCollisionCandidates(maskMU); 
   task0MU->SetNChargedRange(30,50);


   //Task for ITS tracks 
   AliAnalysisTaskQASym *task1 = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_ITS");
   task1->SetTrackType(1);
   task1->SetStandAloneTrack(kFALSE);
   task1->SelectCollisionCandidates(maskMB);
   task1->SetNChargedRange(30,50); 
   //Task for ITS tracks SA
   AliAnalysisTaskQASym *task1sa = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_ITS_SA");
   task1sa->SetTrackType(1);
   task1sa->SetStandAloneTrack(kTRUE);
   task1sa->SelectCollisionCandidates(maskMB);
   task1sa->SetNChargedRange(30,50); 
   //Task for TPC tracks 
   AliAnalysisTaskQASym *task2 = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_TPC");
   task2->SetTrackType(2);
   task2->SelectCollisionCandidates(maskMB);
   task2->SetNChargedRange(30,50); 

   //cuts for global tracks
   AliESDtrackCuts* esdTrackCutsL0 = new AliESDtrackCuts("AliESDtrackCuts0","Global");
   esdTrackCutsL0->SetMinNClustersTPC(70);
   esdTrackCutsL0->SetRequireTPCRefit(kTRUE);
   esdTrackCutsL0->SetRequireITSRefit(kTRUE);
   esdTrackCutsL0->SetMaxDCAToVertexXY(3.);
   esdTrackCutsL0->SetMaxDCAToVertexZ(3.);
   esdTrackCutsL0->SetAcceptKinkDaughters(kFALSE);
   
   //cuts for ITS tracks
   AliESDtrackCuts* esdTrackCutsL1 = new AliESDtrackCuts("AliESDtrackCuts1","ITS");
   esdTrackCutsL1->SetMaxDCAToVertexXY(3.);
   esdTrackCutsL1->SetMaxDCAToVertexZ(3.);
   esdTrackCutsL1->SetAcceptKinkDaughters(kFALSE);
   esdTrackCutsL1->SetRequireITSRefit(kTRUE);
   esdTrackCutsL1->SetRequireITSStandAlone(kTRUE); 

   //cuts for ITS tracks SA
   AliESDtrackCuts* esdTrackCutsL1sa = new AliESDtrackCuts("AliESDtrackCuts1sa","ITS_SA");
   esdTrackCutsL1sa->SetMaxDCAToVertexXY(3.);
   esdTrackCutsL1sa->SetMaxDCAToVertexZ(3.);
   esdTrackCutsL1sa->SetAcceptKinkDaughters(kFALSE);
   esdTrackCutsL1sa->SetRequireITSRefit(kTRUE);
   esdTrackCutsL1sa->SetRequireITSPureStandAlone(kTRUE);
   
   //cuts for TPC tracks
   AliESDtrackCuts* esdTrackCutsL2 = new AliESDtrackCuts("AliESDtrackCuts2","TPC");
   esdTrackCutsL2->SetRequireTPCRefit(kFALSE);
   esdTrackCutsL2->SetAcceptKinkDaughters(kFALSE);
   //jacek's cuts:
   esdTrackCutsL2->SetMinNClustersTPC(70);
   // cut on max ncl=160 in Task
   esdTrackCutsL2->SetMaxDCAToVertexXY(3.);
   esdTrackCutsL2->SetMaxDCAToVertexZ(3.);
   esdTrackCutsL2->SetMaxChi2PerClusterTPC(3.999);
   //cut minChi=0 in task
   //esdTrackCutsL2->SetPRange(0.15,16); // not needed for QA
   //esdTrackCutsL2->SetEtaRange(-0.8, 0.7999); // not needed for QA
  

   task0->SetCuts(esdTrackCutsL0);
   task0HM->SetCuts(esdTrackCutsL0);
   task0EM->SetCuts(esdTrackCutsL0);
   task0MU->SetCuts(esdTrackCutsL0);
   task1->SetCuts(esdTrackCutsL1);
   task1sa->SetCuts(esdTrackCutsL1sa);
   task2->SetCuts(esdTrackCutsL2);

   mgr->AddTask(task0);
   mgr->AddTask(task0HM);
   mgr->AddTask(task0EM);
   mgr->AddTask(task0MU);
   mgr->AddTask(task1);
   mgr->AddTask(task1sa);
   mgr->AddTask(task2);
  
   AliAnalysisDataContainer *cout0    = 0;
   AliAnalysisDataContainer *cout0HM  = 0;
   AliAnalysisDataContainer *cout0EM  = 0;
   AliAnalysisDataContainer *cout0MU  = 0;
   AliAnalysisDataContainer *cout1    = 0;
   AliAnalysisDataContainer *cout1sa  = 0;
   AliAnalysisDataContainer *cout2    = 0;
   
   if(runNumber>0){ 
    cout0 =  mgr->CreateContainer("QAsymHists_Global",TList::Class(),
				  AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
    cout0HM =  mgr->CreateContainer("QAsymHists_Global_HighMult",TList::Class(),
				    AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
    cout0EM =  mgr->CreateContainer("QAsymHists_Global_Emcal",TList::Class(),
				    AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
    cout0MU =  mgr->CreateContainer("QAsymHists_Global_Muon",TList::Class(),
				    AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
    cout1 =  mgr->CreateContainer("QAsymHists_ITS",TList::Class(),
				  AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
    cout1sa =  mgr->CreateContainer("QAsymHists_ITS_SA",TList::Class(),
				    AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
    cout2 =  mgr->CreateContainer("QAsymHists_TPC",TList::Class(),
				  AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
   }
   
   else{
      cout0 = mgr->CreateContainer("QAsymHists_Global",TList::Class(),
				 AliAnalysisManager::kOutputContainer, 
				 Form("%s:PWGPP_QAsymHists",AliAnalysisManager::GetCommonFileName()));
      cout0HM = mgr->CreateContainer("QAsymHists_Global_HighMult",TList::Class(),
				   AliAnalysisManager::kOutputContainer, 
				   Form("%s:PWGPP_QAsymHists",AliAnalysisManager::GetCommonFileName()));
      cout0EM = mgr->CreateContainer("QAsymHists_Global_Emcal",TList::Class(),
				     AliAnalysisManager::kOutputContainer, 
				     Form("%s:PWGPP_QAsymHists",AliAnalysisManager::GetCommonFileName()));
      cout0MU = mgr->CreateContainer("QAsymHists_Global_Muon",TList::Class(),
				     AliAnalysisManager::kOutputContainer, 
				     Form("%s:PWGPP_QAsymHists",AliAnalysisManager::GetCommonFileName()));
      cout1 = mgr->CreateContainer("QAsymHists_ITS",TList::Class(),
				   AliAnalysisManager::kOutputContainer, 
				 Form("%s:PWGPP_QAsymHists",AliAnalysisManager::GetCommonFileName()));
      cout1sa = mgr->CreateContainer("QAsymHists_ITS_SA",TList::Class(),
				     AliAnalysisManager::kOutputContainer, 
				     Form("%s:PWGPP_QAsymHists",AliAnalysisManager::GetCommonFileName()));
      cout2 = mgr->CreateContainer("QAsymHists_TPC",TList::Class(),
				   AliAnalysisManager::kOutputContainer, 
				 Form("%s:PWGPP_QAsymHists",AliAnalysisManager::GetCommonFileName()));
   }


   mgr->ConnectInput  (task0,   0, mgr->GetCommonInputContainer());
   mgr->ConnectInput  (task0HM, 0, mgr->GetCommonInputContainer());
   mgr->ConnectInput  (task0EM, 0, mgr->GetCommonInputContainer());
   mgr->ConnectInput  (task0MU, 0, mgr->GetCommonInputContainer());
   mgr->ConnectInput  (task1,   0, mgr->GetCommonInputContainer());
   mgr->ConnectInput  (task1sa, 0, mgr->GetCommonInputContainer());
   mgr->ConnectInput  (task2,   0, mgr->GetCommonInputContainer());

   mgr->ConnectOutput (task0,   1, cout0);
   mgr->ConnectOutput (task0HM, 1, cout0HM);
   mgr->ConnectOutput (task0EM, 1, cout0EM);
   mgr->ConnectOutput (task0MU, 1, cout0MU);
   mgr->ConnectOutput (task1,   1, cout1);
   mgr->ConnectOutput (task1sa, 1, cout1sa);
   mgr->ConnectOutput (task2,   1, cout2);
  
   return task0;

}


 AddTaskQAsym.C:1
 AddTaskQAsym.C:2
 AddTaskQAsym.C:3
 AddTaskQAsym.C:4
 AddTaskQAsym.C:5
 AddTaskQAsym.C:6
 AddTaskQAsym.C:7
 AddTaskQAsym.C:8
 AddTaskQAsym.C:9
 AddTaskQAsym.C:10
 AddTaskQAsym.C:11
 AddTaskQAsym.C:12
 AddTaskQAsym.C:13
 AddTaskQAsym.C:14
 AddTaskQAsym.C:15
 AddTaskQAsym.C:16
 AddTaskQAsym.C:17
 AddTaskQAsym.C:18
 AddTaskQAsym.C:19
 AddTaskQAsym.C:20
 AddTaskQAsym.C:21
 AddTaskQAsym.C:22
 AddTaskQAsym.C:23
 AddTaskQAsym.C:24
 AddTaskQAsym.C:25
 AddTaskQAsym.C:26
 AddTaskQAsym.C:27
 AddTaskQAsym.C:28
 AddTaskQAsym.C:29
 AddTaskQAsym.C:30
 AddTaskQAsym.C:31
 AddTaskQAsym.C:32
 AddTaskQAsym.C:33
 AddTaskQAsym.C:34
 AddTaskQAsym.C:35
 AddTaskQAsym.C:36
 AddTaskQAsym.C:37
 AddTaskQAsym.C:38
 AddTaskQAsym.C:39
 AddTaskQAsym.C:40
 AddTaskQAsym.C:41
 AddTaskQAsym.C:42
 AddTaskQAsym.C:43
 AddTaskQAsym.C:44
 AddTaskQAsym.C:45
 AddTaskQAsym.C:46
 AddTaskQAsym.C:47
 AddTaskQAsym.C:48
 AddTaskQAsym.C:49
 AddTaskQAsym.C:50
 AddTaskQAsym.C:51
 AddTaskQAsym.C:52
 AddTaskQAsym.C:53
 AddTaskQAsym.C:54
 AddTaskQAsym.C:55
 AddTaskQAsym.C:56
 AddTaskQAsym.C:57
 AddTaskQAsym.C:58
 AddTaskQAsym.C:59
 AddTaskQAsym.C:60
 AddTaskQAsym.C:61
 AddTaskQAsym.C:62
 AddTaskQAsym.C:63
 AddTaskQAsym.C:64
 AddTaskQAsym.C:65
 AddTaskQAsym.C:66
 AddTaskQAsym.C:67
 AddTaskQAsym.C:68
 AddTaskQAsym.C:69
 AddTaskQAsym.C:70
 AddTaskQAsym.C:71
 AddTaskQAsym.C:72
 AddTaskQAsym.C:73
 AddTaskQAsym.C:74
 AddTaskQAsym.C:75
 AddTaskQAsym.C:76
 AddTaskQAsym.C:77
 AddTaskQAsym.C:78
 AddTaskQAsym.C:79
 AddTaskQAsym.C:80
 AddTaskQAsym.C:81
 AddTaskQAsym.C:82
 AddTaskQAsym.C:83
 AddTaskQAsym.C:84
 AddTaskQAsym.C:85
 AddTaskQAsym.C:86
 AddTaskQAsym.C:87
 AddTaskQAsym.C:88
 AddTaskQAsym.C:89
 AddTaskQAsym.C:90
 AddTaskQAsym.C:91
 AddTaskQAsym.C:92
 AddTaskQAsym.C:93
 AddTaskQAsym.C:94
 AddTaskQAsym.C:95
 AddTaskQAsym.C:96
 AddTaskQAsym.C:97
 AddTaskQAsym.C:98
 AddTaskQAsym.C:99
 AddTaskQAsym.C:100
 AddTaskQAsym.C:101
 AddTaskQAsym.C:102
 AddTaskQAsym.C:103
 AddTaskQAsym.C:104
 AddTaskQAsym.C:105
 AddTaskQAsym.C:106
 AddTaskQAsym.C:107
 AddTaskQAsym.C:108
 AddTaskQAsym.C:109
 AddTaskQAsym.C:110
 AddTaskQAsym.C:111
 AddTaskQAsym.C:112
 AddTaskQAsym.C:113
 AddTaskQAsym.C:114
 AddTaskQAsym.C:115
 AddTaskQAsym.C:116
 AddTaskQAsym.C:117
 AddTaskQAsym.C:118
 AddTaskQAsym.C:119
 AddTaskQAsym.C:120
 AddTaskQAsym.C:121
 AddTaskQAsym.C:122
 AddTaskQAsym.C:123
 AddTaskQAsym.C:124
 AddTaskQAsym.C:125
 AddTaskQAsym.C:126
 AddTaskQAsym.C:127
 AddTaskQAsym.C:128
 AddTaskQAsym.C:129
 AddTaskQAsym.C:130
 AddTaskQAsym.C:131
 AddTaskQAsym.C:132
 AddTaskQAsym.C:133
 AddTaskQAsym.C:134
 AddTaskQAsym.C:135
 AddTaskQAsym.C:136
 AddTaskQAsym.C:137
 AddTaskQAsym.C:138
 AddTaskQAsym.C:139
 AddTaskQAsym.C:140
 AddTaskQAsym.C:141
 AddTaskQAsym.C:142
 AddTaskQAsym.C:143
 AddTaskQAsym.C:144
 AddTaskQAsym.C:145
 AddTaskQAsym.C:146
 AddTaskQAsym.C:147
 AddTaskQAsym.C:148
 AddTaskQAsym.C:149
 AddTaskQAsym.C:150
 AddTaskQAsym.C:151
 AddTaskQAsym.C:152
 AddTaskQAsym.C:153
 AddTaskQAsym.C:154
 AddTaskQAsym.C:155
 AddTaskQAsym.C:156
 AddTaskQAsym.C:157
 AddTaskQAsym.C:158
 AddTaskQAsym.C:159
 AddTaskQAsym.C:160
 AddTaskQAsym.C:161
 AddTaskQAsym.C:162
 AddTaskQAsym.C:163
 AddTaskQAsym.C:164
 AddTaskQAsym.C:165
 AddTaskQAsym.C:166
 AddTaskQAsym.C:167
 AddTaskQAsym.C:168
 AddTaskQAsym.C:169
 AddTaskQAsym.C:170
 AddTaskQAsym.C:171
 AddTaskQAsym.C:172
 AddTaskQAsym.C:173
 AddTaskQAsym.C:174
 AddTaskQAsym.C:175
 AddTaskQAsym.C:176
 AddTaskQAsym.C:177
 AddTaskQAsym.C:178
 AddTaskQAsym.C:179
 AddTaskQAsym.C:180
 AddTaskQAsym.C:181
 AddTaskQAsym.C:182
 AddTaskQAsym.C:183
 AddTaskQAsym.C:184
 AddTaskQAsym.C:185
 AddTaskQAsym.C:186
 AddTaskQAsym.C:187
 AddTaskQAsym.C:188
 AddTaskQAsym.C:189
 AddTaskQAsym.C:190
 AddTaskQAsym.C:191
 AddTaskQAsym.C:192
 AddTaskQAsym.C:193
 AddTaskQAsym.C:194
 AddTaskQAsym.C:195
 AddTaskQAsym.C:196
 AddTaskQAsym.C:197