]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskSpectraBoth.C
Newest version of analysis code from GSI.
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / AddTaskSpectraBoth.C
1 AliAnalysisTaskSpectraBoth* AddTaskSpectraBoth(Bool_t mc=kFALSE,\r
2                                              Double_t CentCutMin=0,\r
3                                              Double_t CentCutMax=100,\r
4                                              Double_t QvecCutMin=0,\r
5                                              Double_t QvecCutMax=100,\r
6                                              Double_t EtaMin=-0.8,\r
7                                              Double_t EtaMax=0.8,\r
8                                              Double_t Nsigmapid=3.,\r
9                                              Double_t pt=5.,\r
10                                              Double_t p=5.,\r
11                                              Double_t ymin=-0.5,\r
12                                              Double_t ymax=.5,  \r
13                                              Double_t ptTofMatch=.6,\r
14                                              UInt_t trkbit=1,\r
15                                              UInt_t trkbitQVector=1,\r
16                                              Bool_t UseCentPatchAOD049=kFALSE,\r
17                                              Double_t DCA=100000,\r
18                                              UInt_t minNclsTPC=70,\r
19                                              Int_t nrebin=0,\r
20                                              TString centestimator="V0M",\r
21                                              Int_t pidmethod=2,                                                 \r
22                                              Float_t tpcshift=0.0,\r
23                                              Float_t tofshift=0.0){\r
24   \r
25   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
26   if (!mgr) \r
27     {\r
28       ::Error("AddAliAnalysisTaskSpectraAOD", "No analysis manager to connect to.");\r
29       return NULL;\r
30     }   \r
31   \r
32   // Check the analysis type using the event handlers connected to the analysis manager.\r
33   //==============================================================================\r
34   if (!mgr->GetInputEventHandler()) \r
35     {\r
36       ::Error("AddTaskITSsaTracks", "This task requires an input event handler");\r
37       return NULL;\r
38     }   \r
39   \r
40   TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"\r
41  // if(type.Contains("ESD"))\r
42    // {\r
43     //  ::Error("AddTaskITSsaTracks", "This task requires to run on AOD");\r
44     //  return NULL;\r
45  //   }\r
46   \r
47   using namespace AliSpectraNameSpaceBoth;\r
48   \r
49   TString opt=Form("Est_%s_Pid_%d_Y%.1fto%.1f", centestimator.Data(),pidmethod,ymin,ymax);      \r
50   AliSpectraBothPID *pid = new AliSpectraBothPID(); \r
51   pid->SetNSigmaCut(Nsigmapid);\r
52   pid->SetShiftTPC(tpcshift);\r
53   pid->SetShiftTOF(tofshift);\r
54   if(pidmethod==0)\r
55         pid->SetPIDtype(AliSpectraBothPID::kNSigmaTPC);\r
56   else if (pidmethod==1)\r
57         pid->SetPIDtype(AliSpectraBothPID::kNSigmaTOF);\r
58   else          \r
59         pid->SetPIDtype(AliSpectraBothPID::kNSigmaTPCTOF);\r
60 \r
61   AliSpectraBothTrackCuts  * trcuts = new AliSpectraBothTrackCuts("Track Cuts");  \r
62   trcuts->SetDCA(DCA);\r
63   trcuts->SetTrackBits(trkbit);\r
64   trcuts->SetPt(pt);\r
65   trcuts->SetP(p);\r
66   trcuts->SetY(ymax,ymin);\r
67   trcuts->SetPtTOFMatching(ptTofMatch);   \r
68   trcuts->SetEta(EtaMin,EtaMax);\r
69   trcuts->SetMinTPCcls(minNclsTPC);\r
70   trcuts->PrintCuts();\r
71   \r
72   AliSpectraBothEventCuts * evcuts = new AliSpectraBothEventCuts("Event Cuts");\r
73   evcuts->SetQVectorCut(QvecCutMin,QvecCutMax);\r
74   evcuts->SetCentralityCutMax(CentCutMax);  \r
75   evcuts->SetCentralityCutMin(CentCutMin);\r
76   evcuts->SetTrackBits(trkbitQVector);\r
77   evcuts->SetCentEstimator(centestimator);      \r
78   if(mc==1)evcuts->SetIsMC(kTRUE);\r
79   evcuts->PrintCuts();\r
80   \r
81   AliAnalysisTaskSpectraBoth *task = new AliAnalysisTaskSpectraBoth(Form("TaskBothSpectraCent%.0fto%.0f_QVec%.1fto%.1f_Eta%.1fto%.1f_%.1fSigmaPID_TrBit%d%s",   \r
82                                                                        CentCutMin,\r
83                                                                        CentCutMax,\r
84                                                                        QvecCutMin,\r
85                                                                        QvecCutMax,\r
86                                                                        EtaMin,\r
87                                                                        EtaMax,\r
88                                                                        Nsigmapid,\r
89                                                                        trkbit,\r
90                                                                        opt.Data()));\r
91   task->SetPID(pid);  \r
92   task->SetEventCuts(evcuts);\r
93   task->SetTrackCuts(trcuts);\r
94   task->SetNRebin(nrebin);\r
95   if(mc==1)task->SetIsMC(kTRUE);\r
96   \r
97   TString outputFileName = AliAnalysisManager::GetCommonFileName();\r
98   \r
99   TString typeofdata=mc?"MC":"Data";\r
100   outputFileName += Form(":OutputBothSpectraTask_%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());\r
101   \r
102   TString tmpstring= Form("OutputBothSpectraTask_%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());\r
103   \r
104   cout<<"outputFileName:  "<<outputFileName<<endl;\r
105   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();      \r
106   AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("%schistpt",tmpstring.Data()), AliSpectraBothHistoManager::Class(),  AliAnalysisManager::kOutputContainer,outputFileName);\r
107   AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("%scvcutpt",tmpstring.Data()), AliSpectraBothEventCuts::Class(),    AliAnalysisManager::kOutputContainer,outputFileName);\r
108   AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("%sctcutpt",tmpstring.Data()), AliSpectraBothTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, outputFileName);\r
109   AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("%scpidpt",tmpstring.Data()),  AliSpectraBothPID::Class(),     AliAnalysisManager::kOutputContainer,outputFileName);\r
110   \r
111   mgr->ConnectInput(task, 0, cinput);\r
112   mgr->ConnectOutput(task, 1, coutputpt1);\r
113   mgr->ConnectOutput(task, 2, coutputpt2);\r
114   mgr->ConnectOutput(task, 3, coutputpt3);\r
115   mgr->ConnectOutput(task, 4, coutputpt4);\r
116   \r
117   mgr->AddTask(task);\r
118   return task;\r
119 }\r