]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskSpectraAOD.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / AddTaskSpectraAOD.C
1 AliAnalysisTaskSpectraAOD* AddTaskSpectraAOD(Bool_t mc=kFALSE,
2                                              Double_t CentCutMin=0,
3                                              Double_t CentCutMax=100,
4                                              Double_t QvecCutMin=0,
5                                              Double_t QvecCutMax=100,
6                                              Double_t EtaMin=-0.8,
7                                              Double_t EtaMax=0.8,
8                                              Double_t Nsigmapid=3.,
9                                              Double_t pt=5.,
10                                              Double_t p=5.,
11                                              Double_t y=.5,
12                                              Double_t ptTofMatch=.6,
13                                              UInt_t trkbit=1,
14                                              UInt_t trkbitQVector=1,
15                                              Double_t DCA=100000,
16                                              UInt_t minNclsTPC=70,
17                                              Int_t nrebin=0,
18                                              TString opt=""){
19   
20   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
21   if (!mgr) 
22     {
23       ::Error("AddAliAnalysisTaskSpectraAOD", "No analysis manager to connect to.");
24       return NULL;
25     }   
26   
27   // Check the analysis type using the event handlers connected to the analysis manager.
28   //==============================================================================
29   if (!mgr->GetInputEventHandler()) 
30     {
31       ::Error("AddTaskITSsaTracks", "This task requires an input event handler");
32       return NULL;
33     }   
34   
35   TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
36   if(type.Contains("ESD"))
37     {
38       ::Error("AddTaskITSsaTracks", "This task requires to run on AOD");
39       return NULL;
40     }
41   
42   using namespace AliSpectraNameSpace;
43   
44   AliSpectraAODPID *pid = new AliSpectraAODPID(); 
45   pid->SetNSigmaCut(Nsigmapid);
46   
47   AliSpectraAODTrackCuts  * trcuts = new AliSpectraAODTrackCuts("Track Cuts");  
48   trcuts->SetDCA(DCA);
49   trcuts->SetTrackBits(trkbit);
50   trcuts->SetPt(pt);
51   trcuts->SetP(p);
52   trcuts->SetY(y);
53   trcuts->SetPtTOFMatching(ptTofMatch);   
54   trcuts->SetEta(EtaMin,EtaMax);
55   trcuts->SetMinTPCcls(minNclsTPC);
56   trcuts->PrintCuts();
57   
58   AliSpectraAODEventCuts * evcuts = new AliSpectraAODEventCuts("Event Cuts");
59   evcuts->SetQVectorCut(QvecCutMin,QvecCutMax);
60   evcuts->SetCentralityCutMax(CentCutMax);  
61   evcuts->SetCentralityCutMin(CentCutMin);
62   evcuts->SetTrackBits(trkbitQVector);
63   if(mc==1)evcuts->SetIsMC(kTRUE);
64   evcuts->PrintCuts();
65   
66   AliAnalysisTaskSpectraAOD *task = new AliAnalysisTaskSpectraAOD(Form("TaskAODSpectraCent%.0fto%.0f_QVec%.1fto%.1f_Eta%.1fto%.1f_%.1fSigmaPID_TrBit%d%s",      
67                                                                        CentCutMin,
68                                                                        CentCutMax,
69                                                                        QvecCutMin,
70                                                                        QvecCutMax,
71                                                                        EtaMin,
72                                                                        EtaMax,
73                                                                        Nsigmapid,
74                                                                        trkbit,
75                                                                        opt.Data()));
76   task->SetPID(pid);  
77   task->SetEventCuts(evcuts);
78   task->SetTrackCuts(trcuts);
79   task->SetNRebin(nrebin);
80   if(mc==1)task->SetIsMC(kTRUE);
81   
82   TString outputFileName = AliAnalysisManager::GetCommonFileName();
83   
84   TString typeofdata=mc?"MC":"Data";
85   
86   outputFileName += Form(":OutputAODSpectraTask_%s_Cent%.0fto%.0f_QVec%.1fto%.1f_Eta%.1fto%.1f_%.1fSigmaPID_TrBit%d%s",typeofdata.Data(),evcuts->GetCentralityMin(),evcuts->GetCentralityMax(),evcuts->GetQVectorCutMin(), evcuts->GetQVectorCutMax(),trcuts->GetEtaMin(),trcuts->GetEtaMax(),pid->GetNSigmaCut(),trcuts->GetTrackType(),opt.Data());
87   
88   cout<<"outputFileName:  "<<outputFileName<<endl;
89   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();      
90   AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer("chistpt", AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer,outputFileName);
91   AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer("cvcutpt", AliSpectraAODEventCuts::Class(),    AliAnalysisManager::kOutputContainer,outputFileName);
92   AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer("ctcutpt", AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, outputFileName);
93   AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer("cpidpt",  AliSpectraAODPID::Class(),     AliAnalysisManager::kOutputContainer,outputFileName);
94
95   mgr->AddTask(task);
96   
97   mgr->ConnectInput(task, 0, cinput);
98   mgr->ConnectOutput(task, 1, coutputpt1);
99   mgr->ConnectOutput(task, 2, coutputpt2);
100   mgr->ConnectOutput(task, 3, coutputpt3);
101   mgr->ConnectOutput(task, 4, coutputpt4);
102
103   return task;
104 }