]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TestAOD/AddTaskSpectraBoth.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / AddTaskSpectraBoth.C
1 AliAnalysisTaskSpectraBoth* 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   
83   AliAnalysisTaskSpectraBoth *task = new AliAnalysisTaskSpectraBoth(Form("TaskBothSpectraCent%.3fto%.3f_QVec%.1fto%.1f_Eta%.1fto%.1f_%.1fSigmaPID_TrBit%d%s",   
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";
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());
103   
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());
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 }