Added analysis task for * Event by event PID fluctuation analysis
[u/mrichter/AliRoot.git] / PWGCF / EBYE / PIDFluctuation / macros / AddAnalysisTaskPIDFluctuation.C
1 //__________________________________________________________________
2
3 AliAnalysisTaskPIDFluctuation *
4 AddAnalysisTaskPIDFluctuation(Int_t aodFilterBit, Float_t ptMin, Float_t ptMax, Float_t etaMin, Float_t etaMax)
5 {
6
7   /* init analysis name */
8   TString analysisName = "PIDFluctuation";
9   analysisName += "_";
10   analysisName += GetAODFilterBitName(aodFilterBit);
11   analysisName += "_";
12   analysisName += Form("pt_%.1f_%.1f", ptMin, ptMax);
13   analysisName += "_";
14   analysisName += Form("eta_%.1f_%.1f", etaMin, etaMax);
15
16   /* check analysis manager */
17   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
18   if (!mgr) {
19     Error("", "cannot get analysis manager");
20     return NULL;
21   }
22
23   /* check input event handler */
24   if (!mgr->GetInputEventHandler()) {
25     Error("", "cannot get input event handler");
26     return NULL;
27   }
28   
29   /* get common input data container */
30   AliAnalysisDataContainer *inputc = mgr->GetCommonInputContainer();
31   if (!inputc) {
32     Error("", "cannot get common input container");
33     return NULL;
34   }
35    
36   /* create output data container */
37   AliAnalysisDataContainer *outputc1 = mgr->CreateContainer(analysisName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, "PIDFluctuation.root");
38   if (!outputc1) {
39     Error("", "cannot create output container \"Histos\"");
40     return NULL;
41   }
42
43   /*  create task and connect input/output */
44   AliAnalysisTaskPIDFluctuation *task = new AliAnalysisTaskPIDFluctuation(analysisName.Data());
45   mgr->AddTask(task);
46   mgr->ConnectInput(task, 0, inputc);
47   mgr->ConnectOutput(task, 1, outputc1);
48
49   /* setup task */
50   task->SetESDtrackCuts(GetESDtrackCuts(aodFilterBit));
51   task->SetAODfilterBit(aodFilterBit);
52   task->SetEtaRange(etaMin, etaMax);
53   task->SetPtRange(ptMin, ptMax);
54
55   task->Dump();
56   return task;
57 }
58
59 //__________________________________________________________________
60
61 AliESDtrackCuts *
62 GetESDtrackCuts(Int_t type)
63 {
64   AliESDtrackCuts *trackCuts;
65   switch (type) {
66   case AliAODTrack::kTrkGlobal:
67     trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
68     break;
69   case AliAODTrack::kTrkTPCOnlyConstrained:
70   case AliAODTrack::kTrkTPCOnly:
71     trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
72     trackCuts->SetMinNClustersTPC(70);
73     break;
74   }
75   return trackCuts;
76 }
77
78 //__________________________________________________________________
79
80 Char_t *
81 GetAODFilterBitName(Int_t type)
82 {
83   switch (type) {
84   case AliAODTrack::kTrkGlobal:
85     return "TrkGlobal";
86     break;
87   case AliAODTrack::kTrkTPCOnlyConstrained:
88     return "TrkTPCOnlyConstrained";
89     break;
90   case AliAODTrack::kTrkTPCOnly:
91     return "TrkTPCOnly";
92     break;
93   }
94 }