]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/PIDFluctuation/macros/AddAliEbyENetChargeFluctuationBinTask.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / EBYE / PIDFluctuation / macros / AddAliEbyENetChargeFluctuationBinTask.C
1 //=========================================================================//
2 //                                                                         //
3 //           Analysis AddTask for Particle Ratio Fluctuation Study         //
4 //              Author: Deepika Rathee  || Satyajit Jenara                 //
5 //                      drathee@cern.ch || sjena@cern.ch                   //
6 //                       Thu Dec 19 09:09:38 CET 2013
7 //                                                                         //
8 //=========================================================================//
9
10 void AddAliEbyENetChargeFluctuationBinTask(const Char_t *taskname="TOFTPC",
11                                            const Char_t *centralityEstimator = "V0M",
12                                            Bool_t isModeAOD    = 1,
13                                            Int_t  aodFilterBit = 768, 
14                                            Int_t  sysType      = 0,   // 0-pp,1-pA,2-AA, 3,4,5 mc
15                                            Int_t  cuttype      = 9,   // esd cut type
16                                            
17                                            Int_t pidtype       = 2, 
18                                            Int_t requestTofPid = 1,
19                                            Double_t nSigmaCut  = 3.,
20                                            Double_t lptfortof  = 0.5,
21                                            
22                                            Double_t ptl        = 0.5, 
23                                            Double_t pth        = 5.0, 
24                                            
25                                            Double_t gEta       = 0.8,
26                                            Double_t gRap       = 0.5,
27
28                                            Double_t dcaxy     = 2.4,
29                                            Double_t dcaz      = 3.2,
30                                            
31                                            Double_t vz         = 10.,
32                                            Int_t nSample       = 25,
33                                            Int_t analType      = 1) {
34   
35   Double_t vx = 3.; Double_t vy = 3.; 
36  
37
38   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
39   if (!mgr) {
40     ::Error("AddTaskFluctuations", "No analysis manager to connect to.");
41     return NULL;
42   }
43
44   if (!mgr->GetInputEventHandler()) {
45     ::Error("AddTaskFluctuations", "This task requires an input event handler");
46     return NULL;
47   }
48
49   Bool_t isMC = (mgr->GetMCtruthEventHandler() != NULL);
50   if (isMC)
51     Info("AddTaskNetParticle", "This task has MC.");
52
53
54   AliHelperPID* help = new AliHelperPID();
55   help->SetNSigmaCut(nSigmaCut);
56   help->SetPIDType(pidtype); // kNSigmaTPC,kNSigmaTOF, kNSigmaTPCTOF
57   if (requestTofPid) {
58     help->SetfRequestTOFPID(requestTofPid);
59     if (ptl != 0 ) help->SetfPtTOFPID(lptfortof);
60   }
61   
62   if (sysType > 2) help->SetisMC(1); else help->SetisMC(0);
63   
64   if (pidtype == 3){
65     AliPIDCombined *pidc=new AliPIDCombined();
66     pidc->SetDefaultTPCPriors();
67     help->SetPIDCombined(pidc);
68   }
69
70   
71
72   AliEbyENetChargeFluctuationTask *task[8];
73   AliAnalysisDataContainer *cout1[8];
74   AliAnalysisDataContainer *cout2[8];
75   AliAnalysisDataContainer *cout3[8];
76   AliAnalysisDataContainer *cout4[8];
77   
78   gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/PIDFluctuation/macros/configureNetChargeTrackCut.C"); 
79   AliESDtrackCuts *cuts[8];
80
81   for (Int_t iEta = 0; iEta < 8; iEta++ ) {
82
83     TString taskname_ctr = Form("E%d",iEta);
84
85     Double_t eEta = 0.1 + iEta * 0.1;
86
87     task[iEta] = new AliEbyENetChargeFluctuationTask(Form("%s_%s",taskname,taskname_ctr.Data()));
88     if (!task[iEta]) {
89       Error("EbyEPidRatio", "Task could not be created.");
90       return NULL;
91     }
92     
93     Printf("=========== Run For the Eta Window %s ==========",taskname_ctr.Data());
94     
95     if (isMC) task[iEta]->SetIsMC();
96     
97     Int_t sysii = sysType;
98     if (sysType > 2) {task[iEta]->SetIsMC(); sysii = sysType - 3;}
99     
100     if (isModeAOD) {
101       task[iEta]->SetIsAOD();                       
102       task[iEta]->SetTrackFilterBit(aodFilterBit);
103     }
104     task[iEta]->SetSystemType(sysii);
105     task[iEta]->SetCentralityEstimator(centralityEstimator);
106     task[iEta]->SetVertexDiamond(vx,vy,vz);
107     task[iEta]->SetKinematicsCuts(ptl,pth,eEta,gRap);
108     task[iEta]->SetNSubSamples(nSample);
109     task[iEta]->SetDca(dcaxy,dcaz);
110     
111     if (!isModeAOD) {
112         cuts[iEta] = configureNetChargeTrackCut(taskname_ctr.Data(),cuttype,10001006, eEta, 5.,5.); 
113         task[iEta]->SetAnalysisCutObject(cuts[iEta]);
114         Printf("=========== Cut Applied %s ==========",taskname_ctr.Data());
115     }
116     
117     
118     task[iEta]->SetHelperPID(help);
119     task[iEta]->SetAnal(analType);
120      mgr->AddTask(task[iEta]);
121     
122      
123     TString commonname   = Form("%s:%s_E%d", AliAnalysisManager::GetCommonFileName(),taskname, iEta);
124     
125     cout1[iEta] = mgr->CreateContainer(Form("%s_phy",taskname_ctr.Data()), TList::Class(),  
126                                        AliAnalysisManager::kOutputContainer, commonname);
127     cout2[iEta] = mgr->CreateContainer(Form("%s_qa",taskname_ctr.Data()), TList::Class(),  
128                                        AliAnalysisManager::kOutputContainer, commonname);
129     cout3[iEta] = mgr->CreateContainer(Form("%s_dca",taskname_ctr.Data()), TList::Class(),  
130                                        AliAnalysisManager::kOutputContainer, commonname);
131     cout4[iEta] = mgr->CreateContainer(Form("%s_eff",taskname_ctr.Data()), TList::Class(),  
132                                        AliAnalysisManager::kOutputContainer, commonname);
133     
134     mgr->ConnectInput(task[iEta],  0, mgr->GetCommonInputContainer());
135     mgr->ConnectOutput(task[iEta], 1, cout1[iEta]);
136     mgr->ConnectOutput(task[iEta], 2, cout2[iEta]);
137     mgr->ConnectOutput(task[iEta], 3, cout3[iEta]);
138     mgr->ConnectOutput(task[iEta], 4, cout4[iEta]);
139   }
140   
141   return;
142 }