]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TOF/pPb502/task/AddAnalysisTaskTOFSpectraPbPb.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TOF / pPb502 / task / AddAnalysisTaskTOFSpectraPbPb.C
1 AliAnalysisTaskTOFSpectraPbPb *
2 AddAnalysisTaskTOFSpectraPbPb(Bool_t mcFlag = kFALSE, Bool_t mcTuneFlag = kFALSE, Bool_t pbpbFlag = kFALSE)
3 {
4
5   /* check analysis manager */
6   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
7   if (!mgr) {
8     Error("AddAnalysisTaskTOFSpectraPbPb", "cannot get analysis manager");
9     return NULL;
10   }
11
12   /* check input event handler */
13   if (!mgr->GetInputEventHandler()) {
14     Error("AddAnalysisTaskTOFSpectraPbPb", "cannot get input event handler");
15     return NULL;
16   }
17   
18   /* check input data type */
19   TString str = mgr->GetInputEventHandler()->GetDataType();
20   if (str.CompareTo("ESD")) {
21     Error("AddAnalysisTaskTOFSpectraPbPb", "input data type is not \"ESD\"");
22     return NULL;
23   }
24
25   /* check MC truth event handler */
26   if (mcFlag) {
27     if (!mgr->GetMCtruthEventHandler()) {
28       Error("AddAnalysisTaskTOFSpectraPbPb", "cannot get MC truth event handler");
29       return NULL;
30     }
31   }
32   
33   /* get common input data container */
34   AliAnalysisDataContainer *inputc = mgr->GetCommonInputContainer();
35   if (!inputc) {
36     Error("AddAnalysisTaskTOFSpectraPbPb", "cannot get common input container");
37     return NULL;
38   }
39   
40   /* setup output event handler */
41   AliAODHandler *outputh = (AliAODHandler *)mgr->GetOutputEventHandler();
42   outputh->SetCreateNonStandardAOD();
43   outputh->SetOutputFileName("TOFSpectraPbPb.root");
44
45   /*  create task and connect input/output */
46   AliAnalysisTaskTOFSpectraPbPb *task = new AliAnalysisTaskTOFSpectraPbPb();
47   mgr->ConnectInput(task, 0, inputc);
48
49   /* setup task */
50   task->SetMCFlag(mcFlag);
51   task->SetMCTuneFlag(mcTuneFlag);
52   task->SetPbPbFlag(pbpbFlag);
53   task->SelectCollisionCandidates(AliVEvent::kAny);
54   task->SetVertexSelectionFlag(kTRUE);
55   task->SetVertexCut(15.0);
56   task->SetRapidityCut(1.0);
57   /* setup TOF calib */
58   task->GetTOFcalib()->SetRemoveMeanT0(!mcFlag);
59   task->GetTOFcalib()->SetCalibrateTOFsignal(!mcFlag);
60   task->GetTOFcalib()->SetCorrectTExp(kFALSE);
61   /* setup resolution */
62   Double_t timeReso = 85.;
63   if (mcFlag && !mcTuneFlag) timeReso = 80.;
64   task->SetTimeResolution(timeReso);
65   task->GetESDpid()->GetTOFResponse().SetTimeResolution(timeReso);
66   task->GetTOFT0maker()->SetTimeResolution(timeReso);
67   /* setup track cuts */
68   AliESDtrackCuts *trackCuts = new AliESDtrackCuts;
69   trackCuts->SetMaxChi2PerClusterTPC(4.5);
70   trackCuts->SetAcceptKinkDaughters(kFALSE);
71   trackCuts->SetRequireTPCRefit(kTRUE);
72   trackCuts->SetRequireITSRefit(kTRUE);
73   trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
74                                       AliESDtrackCuts::kAny);
75   trackCuts->SetMaxDCAToVertexZ(2);
76   trackCuts->SetDCAToVertex2D(kFALSE);
77   trackCuts->SetRequireSigmaToVertex(kFALSE);
78   trackCuts->SetMaxChi2PerClusterITS(36);
79   trackCuts->SetPtRange(0.15, 10.);
80   trackCuts->SetEtaRange(-0.9, 0.9);
81   task->SetTrackCuts(trackCuts);
82   
83   /* return task */
84   return task;
85   
86 }