]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/ITSsa/AddTaskITSsaSpectra.C
created PWGLF-SPECTRA directory structure
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / ITSsa / AddTaskITSsaSpectra.C
1 AliAnalysisTaskSEITSsaSpectra *AddTaskITSsaSpectra(Int_t optNtuple=0,Int_t readMC=0,Int_t lowcut=-1,Int_t upcut=-1,Int_t hi=0){
2   // Creates, configures and attaches to the train the task for pi, K , p spectra
3   // with ITS standalone tracks
4   // Get the pointer to the existing analysis manager via the static access method.
5   //==============================================================================
6   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
7   if (!mgr) {
8     ::Error("AddTaskITSsaSpectra", "No analysis manager to connect to.");
9     return NULL;
10   }   
11   
12   // Check the analysis type using the event handlers connected to the analysis manager.
13   //==============================================================================
14   if (!mgr->GetInputEventHandler()) {
15     ::Error("AddTaskITSsaSpectra", "This task requires an input event handler");
16     return NULL;
17   }   
18   
19   TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
20   if(type.Contains("AOD")){
21     ::Error("AddTaskITSsaSpectra", "This task requires to run on ESD");
22     return NULL;
23   }
24   
25   // Add MC handler (for kinematics)
26   if(readMC){
27     AliMCEventHandler* handler = new AliMCEventHandler;
28     handler->SetReadTR(kFALSE);
29     mgr->SetMCtruthEventHandler(handler);
30   }
31   // Create and configure the task
32   
33   AliAnalysisTaskSEITSsaSpectra *taskits = new AliAnalysisTaskSEITSsaSpectra();
34   taskits->SelectCollisionCandidates();
35   taskits->SetReadMC(readMC);
36   taskits->SetFillNtuple(optNtuple);
37   
38   if(hi)
39     {
40       Float_t lowcencut=(Float_t)lowcut;
41       Float_t upcencut=(Float_t)upcut;
42       taskits->SetCentralityCut(lowcencut,upcencut);
43       taskits->SetHImode();
44     }
45   else{
46     taskits->SetMultBin(lowcut,upcut);
47   }
48   
49   mgr->AddTask(taskits);
50   
51   // Create ONLY the output containers for the data produced by the task.
52   // Get and connect other common input/output containers via the manager as below
53   //==============================================================================
54   TString outputFileName = AliAnalysisManager::GetCommonFileName();
55   outputFileName += ":PWG2SpectraITSsa";
56   
57   AliAnalysisDataContainer *coutput =0x0;
58   
59   if(hi)
60     {
61       coutput = mgr->CreateContainer(Form("clistITSsaCent%ito%i",lowcut,upcut),
62                                       TList::Class(),
63                                       AliAnalysisManager::kOutputContainer,
64                                       outputFileName );
65     }
66   else
67     {
68       coutput = mgr->CreateContainer(Form("clistITSsaMult%ito%i",lowcut,upcut),
69                                      TList::Class(),
70                                       AliAnalysisManager::kOutputContainer,
71                                       outputFileName );    
72     }
73   
74   mgr->ConnectInput(taskits, 0, mgr->GetCommonInputContainer());
75   mgr->ConnectOutput(taskits, 1, coutput);
76   return taskits;
77 }