]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/PHOSTasks/PHOS_Correlation/AddTaskPi0Correlations.C
b0129b7ef1c38246e63366fb85e8ae17bc60d2ad
[u/mrichter/AliRoot.git] / PWGGA / PHOSTasks / PHOS_Correlation / AddTaskPi0Correlations.C
1 AliPHOSCorrelations* AddTaskPi0Correlations (           const char* name = "Pi0Corr",
2                                                 const char* options = "11h",
3                                                 UInt_t offlineTriggerMask = AliVEvent::kCentral,
4                                                 AliPHOSCorrelations::TriggerSelection internalTriggerSelection = AliPHOSCorrelations::kNoSelection,
5                                                 Double_t sigmaWidth = 3.,
6                                                 Int_t downCentLimit = 0,
7                                                 Int_t upCentLimit = 90 )
8 {
9         //Author: Ponomarenko Daniil (Daniil.Ponomarenko@cern.ch)
10         /* $Id$ */
11
12         AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
13         if (!mgr) 
14         {
15                 ::Error("AddTaskPi0CorrelationsL", "No analysis manager to connect to");
16                 return NULL;
17         }
18
19         if (!mgr->GetInputEventHandler()) 
20         {
21                 ::Error("AddTaskPi0CorrelationsL", "This task requires an input event handler");
22                 return NULL;
23         }
24         
25                 
26         stringstream ss;
27         ss << downCentLimit;
28         string strDownCentLimit = ss.str();
29         char text[255];
30         sprintf(text,"%2i",upCentLimit);
31         string strUpCentLimit = text;
32         TString centralityBorder = TString ("CB") + strDownCentLimit.c_str() + TString ("t") + strUpCentLimit.c_str() + TString ("Cnt");
33         TString sigmaBorder = Form("%2iSigma", int(sigmaWidth*10.));
34         if (sigmaWidth == 0) sigmaBorder = "00Sigma";
35         TString sName = TString (name) + sigmaBorder + centralityBorder ;
36
37
38         AliPHOSCorrelations* task = new AliPHOSCorrelations(Form("%sTask", sName.Data()),internalTriggerSelection);
39
40         if( TString(options).Contains("10h") )  {
41                 task->SetPeriod( AliPHOSCorrelations::kLHC10h );
42                 task->SetCentralityEstimator("V0M");
43         }
44         if( TString(options).Contains("11h") )  {
45                 task->SetPeriod( AliPHOSCorrelations::kLHC11h );
46                 task->SetCentralityEstimator("V0M");
47         }
48         if( TString(options).Contains("13") )   {
49                 task->SetPeriod( AliPHOSCorrelations::kLHC13 );
50                 task->SetCentralityEstimator("V0A");
51         }
52
53
54         // Binning 
55         // TODO: Make other binning for 0-10% and 20-50%
56         //Any:
57         if( AliVEvent::kAny == offlineTriggerMask ) 
58         {
59                 const int nbins = 8;
60                 Double_t cbin[nbins+1] = {0., 10., 20., 30., 40., 50., 60., 70., 80.};
61                 TArrayD tbin(nbins+1, cbin);
62                 Int_t    nMixed[nbins] = {6, 40, 40, 40, 40, 80, 80, 80};
63                 TArrayI tNMixed(nbins, nMixed);
64                 task->SetCentralityBinning(tbin, tNMixed);
65         }
66         //Central:
67         if( AliVEvent::kCentral == offlineTriggerMask ) 
68         {
69                 const int nbins = 4;
70                 Double_t cbin[nbins+1] = {0., 5., 8., 9., 10.};
71                 TArrayD tbin(nbins+1, cbin);
72                 Int_t    nMixed[nbins] = {6, 6, 6, 6};
73                 TArrayI tNMixed(nbins, nMixed);
74                 task->SetCentralityBinning(tbin, tNMixed);
75         }
76         // SemiCentral:
77         if( AliVEvent::kSemiCentral == offlineTriggerMask ) 
78         {
79                 const int nbins = 8;
80                 Double_t cbin[nbins+1] = {10., 11., 12., 13., 15., 20., 30., 40., 50.};
81                 TArrayD tbin(nbins+1, cbin);
82                 Int_t    nMixed[nbins] = {40, 40, 40, 40, 40, 40, 40, 40};
83                 TArrayI tNMixed(nbins, nMixed);
84                 task->SetCentralityBinning(tbin, tNMixed);
85         }
86         //INT7:
87         if( AliVEvent::kINT7 == offlineTriggerMask || AliVEvent::kPHI7 == offlineTriggerMask) 
88         {
89                 const int nbins = 8;
90                 Double_t cbin[nbins+1] = {0., 10., 20., 30., 40., 50., 60., 70., 80.};
91                 TArrayD tbin(nbins+1, cbin);
92                 Int_t    nMixed[nbins] = {6, 40, 40, 40, 40, 80, 80, 80};
93                 TArrayI tNMixed(nbins, nMixed);
94                 task->SetCentralityBinning(tbin, tNMixed);
95         }
96         // MB or PHOS Trigger:
97         if( AliVEvent::kMB == offlineTriggerMask || AliVEvent::kPHOSPb == offlineTriggerMask ) 
98         {
99                 const int nbins = 8;
100                 Double_t cbin[nbins+1] = {0., 10., 20., 30., 40., 50., 60., 70., 80.};
101                 TArrayD tbin(nbins+1, cbin);
102                 Int_t    nMixed[nbins] = {6, 40, 40, 40, 40, 80, 80, 80};
103                 TArrayI tNMixed(nbins, nMixed);
104                 task->SetCentralityBinning(tbin, tNMixed);
105         }
106
107         task->SelectCollisionCandidates(offlineTriggerMask);
108         task->SetInternalTriggerSelection(internalTriggerSelection);
109         task->EnableTOFCut(true, 100.e-9);
110         task->SetCentralityBorders(downCentLimit , upCentLimit) ;
111         task->SetSigmaWidth(sigmaWidth);
112
113         mgr->AddTask(task);
114         mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer() );
115
116         TString cname(Form("%sCoutput1", sName.Data()));
117         TString pname(Form("%s:%s", AliAnalysisManager::GetCommonFileName(), sName.Data()));
118         AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(cname.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, pname.Data());
119         mgr->ConnectOutput(task, 1, coutput1);
120
121         return task;
122 }
123