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