a94f6592c7b99895813fb3f8a3aa5600d65d6f7f
[u/mrichter/AliRoot.git] / PWGJE / StrangenessInJets / macros / AddTaskJetChem.C
1 AliAnalysisTaskJetChem *AddTaskJetChem(const char* recJetsBranch = "clustersAOD_ANTIKT02_B2_Filter00768_Cut00150_Skip00", TString cutVar = "noCutVar", Int_t eventClass = 1, Int_t K0type = AliAnalysisTaskJetChem::kOffl, Int_t Latype = AliAnalysisTaskJetChem::kOffl, Int_t ALatype = AliAnalysisTaskJetChem::kOffl, Bool_t IsArmenterosSelected = kTRUE, Bool_t IsJetPtBiasSelected = kTRUE, Double_t jetradius = 0.2, Double_t V0EtaCut = 0.7, Double_t jetEtaCut = 0.5, Bool_t IsMC = kFALSE, Double_t DeltaVtxZCut = 0.1, Int_t filtermask = 768, Int_t fdebug = -1)
2 {
3   // Creates a JetChem task,
4   // configures it and adds it to the analysis manager.
5   //for cut variations, set TString cutVar either to "noCutVar", "CPAMin", "CPAMax", "DCADMin", "DCADMax", "LifetMin" or "LifetMax"
6    
7   // Get the pointer to the existing analysis manager via the static access method.
8   //==============================================================================
9   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
10   if (!mgr) {
11     ::Error("AddTaskJetChem", "No analysis manager to connect to.");
12     return NULL;
13   }
14   
15   // Check the analysis type using the event handlers connected to the analysis manager.
16   //==============================================================================
17   if (!mgr->GetInputEventHandler()) {
18     ::Error("AddTaskJetChem", "This task requires an input event handler");
19     return NULL;
20   }
21   
22   TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD", or "MC"?
23   Printf("Data Type: %s", type.Data());
24   
25   
26   // Create the task and configure it.
27   //===========================================================================
28   AliAnalysisTaskJetChem *task = new AliAnalysisTaskJetChem("TaskJetChem");
29
30   Int_t debug = fdebug; // debug level
31   if(debug>=0) task->SetDebugLevel(debug);
32   
33   TString branchRecJets(recJetsBranch);
34   if(!branchRecJets.Contains("noRecJets")) task->SetBranchRecJets(branchRecJets);
35
36   // Double_t V0EtaCut, Double_t jetEtaCut, Bool_t IsMC, Double_t DeltaVtxZCut can be set externally
37   task->SetCutJetEta(jetEtaCut);
38   task->SetDeltaZVertexCut(DeltaVtxZCut);
39   task->SetBranchRecBackClusters("clustersAOD_KT04_B0_Filter00768_Cut00150_Skip00"); 
40   //task->SetEventSelectionMask(AliVEvent::kMB); //for 2010 Pb-Pb data !!
41   task->SetEventSelectionMask(AliVEvent::kAnyINT | AliVEvent::kCentral | AliVEvent::kSemiCentral); //event selection for 2011 Pb-Pb data
42   task->SetEventClass(eventClass);
43   task->SetK0Type(K0type);
44   task->SetLaType(Latype); 
45   task->SetALaType(ALatype); 
46   task->SetSelectArmenteros(IsArmenterosSelected);
47   task->SetAnalysisMC(IsMC); // 0: real data, 1: MC data
48
49   if(K0type == AliAnalysisTaskJetChem::kOnFlyPrim || AliAnalysisTaskJetChem::kOfflPrim) task->SetFilterMaskK0(768);
50   if(Latype == AliAnalysisTaskJetChem::kOnFlyPrim || AliAnalysisTaskJetChem::kOfflPrim) task->SetFilterMaskLa(768);
51   if(ALatype == AliAnalysisTaskJetChem::kOnFlyPrim || AliAnalysisTaskJetChem::kOfflPrim) task->SetFilterMaskALa(768);
52
53   task->SetFFRadius(jetradius); //jet cone size
54   task->SetFilterMask(filtermask);//2011 Track FilterMask
55
56   //Cuts---------------------------------
57   
58   task->SetTrackCuts(0.15, -0.9, 0.9, 0., 2*TMath::Pi());// (pt Cut, daughtertrack rap's, phi min max cuts)
59   task->SetJetCuts(5., (-1)*jetEtaCut, jetEtaCut, 0., 2*TMath::Pi());//(jet pt Cut, jet acceptance, phi min max cuts)
60   task->SetCuttrackPosEta(0.8);
61   task->SetCuttrackNegEta(0.8);
62   task->SetCutV0Eta(V0EtaCut); //pseudorapidity cut, dont use 0.5, because too many tracks would fall out of the acceptance; recommended cut for jet analysis of strange particles: 0.75
63   task->SetCosOfPointingAngle(0.998);
64   task->SetAcceptKinkDaughters(kFALSE);//accept kink daughters -> dont use this cut anymore
65   task->SetRequireTPCRefit(kTRUE);
66   task->SetCutV0DecayMin(0.);//multiples of ctau, cut on 2D decay distance over transverse mom. (for K0s, Lambda, Antilambda)
67   task->SetCutV0DecayMax(5.);//multiples of ctau (for K0s, Lambda, Antilambda) Lee Barnby uses 3.0, use 5.0!!!!!
68   task->SetCutDcaV0Daughters(1.);//cut value in multiples of sigma default: 1.
69   task->SetCutDcaPosToPrimVertex(0.1); //cut value in cm 
70   task->SetCutDcaNegToPrimVertex(0.1); //cut value in cm
71   task->SetCutV0RadiusMin(5.);//in cm previous value was 0.9 cm
72   task->SetCutV0RadiusMax(100.);//in cm
73   task->SetCutBetheBloch(3.);//in units of sigma
74
75   //task->SetCutRatioTPC(0.8);//Cut on Ratio of crossed Rows over findable clusters in TPC -> not used anymore by Strangeness PAG group
76    //task->SetCuttrackPosNcls(70);
77   //task->SetCuttrackNegNcls(70);
78   //task->SetCuttrackPosRap(100000.0);
79   //task->SetCuttrackNegRap(100000.0);
80   //task->SetCutV0Rap(0.5);
81   //task->SetCutV0totMom(10000.);//tot Mom of V0s 
82
83   //Armenteros Cut:
84  
85   if(IsArmenterosSelected == 1){
86     task->SetCutArmenteros(0.2);
87   } else {
88     task->SetCutArmenteros(0.);
89   }
90   
91   if(IsJetPtBiasSelected == 1){
92     task->SetFFMinLTrackPt(5.);//at least one track must have a track-pt higher or equal than this JetMinPt value
93   } else {
94     task->SetFFMinLTrackPt(-1.);
95   }
96   
97   //------------------------------------
98   // Define histo bins
99   task->SetFFHistoBins();
100   task->SetQAJetHistoBins();
101   task->SetQATrackHistoBins();
102   task->SetFFInvMassHistoBins();
103   task->SetFFInvMassLaHistoBins();
104   
105   mgr->AddTask(task);
106   
107    // Create ONLY the output containers for the data produced by the task.
108    // Get and connect other common input/output containers via the manager as below
109    //==============================================================================
110
111    TString strK0type;
112    if(K0type ==  AliAnalysisTaskJetChem::kOnFly)     strK0type = "OnFly";
113    if(K0type ==  AliAnalysisTaskJetChem::kOnFlyPID)  strK0type = "OnFlyPID";
114    if(K0type ==  AliAnalysisTaskJetChem::kOnFlydEdx) strK0type = "OnFlydEdx";
115    if(K0type ==  AliAnalysisTaskJetChem::kOnFlyPrim) strK0type = "OnFlyPrim";
116    if(K0type ==  AliAnalysisTaskJetChem::kOffl)      strK0type = "Offl";
117    if(K0type ==  AliAnalysisTaskJetChem::kOfflPID)   strK0type = "OfflPID";
118    if(K0type ==  AliAnalysisTaskJetChem::kOffldEdx)  strK0type = "OffldEdx";
119    if(K0type ==  AliAnalysisTaskJetChem::kOfflPrim)  strK0type = "OfflPrim";
120
121    TString strLatype;
122    if(Latype ==  AliAnalysisTaskJetChem::kOnFly)     strLatype = "OnFly";
123    if(Latype ==  AliAnalysisTaskJetChem::kOnFlyPID)  strLatype = "OnFlyPID";
124    if(Latype ==  AliAnalysisTaskJetChem::kOnFlydEdx) strLatype = "OnFlydEdx";
125    if(Latype ==  AliAnalysisTaskJetChem::kOnFlyPrim) strLatype = "OnFlyPrim";
126    if(Latype ==  AliAnalysisTaskJetChem::kOffl)      strLatype = "Offl";
127    if(Latype ==  AliAnalysisTaskJetChem::kOfflPID)   strLatype = "OfflPID";
128    if(Latype ==  AliAnalysisTaskJetChem::kOffldEdx)  strLatype = "OffldEdx";
129    if(Latype ==  AliAnalysisTaskJetChem::kOfflPrim)  strLatype = "OfflPrim";
130
131    TString strALatype;
132    if(ALatype ==  AliAnalysisTaskJetChem::kOnFly)     strALatype = "OnFly";
133    if(ALatype ==  AliAnalysisTaskJetChem::kOnFlyPID)  strALatype = "OnFlyPID";
134    if(ALatype ==  AliAnalysisTaskJetChem::kOnFlydEdx) strALatype = "OnFlydEdx";
135    if(ALatype ==  AliAnalysisTaskJetChem::kOnFlyPrim) strALatype = "OnFlyPrim";
136    if(ALatype ==  AliAnalysisTaskJetChem::kOffl)      strALatype = "Offl";
137    if(ALatype ==  AliAnalysisTaskJetChem::kOfflPID)   strALatype = "OfflPID";
138    if(ALatype ==  AliAnalysisTaskJetChem::kOffldEdx)  strALatype = "OffldEdx";
139    if(ALatype ==  AliAnalysisTaskJetChem::kOfflPrim)  strALatype = "OfflPrim";
140    
141    if((IsArmenterosSelected == 0) && (IsJetPtBiasSelected == 0)){
142        TString listName1(Form("PWG4_JetChem_%s_%s_cl%d_%s",branchRecJets.Data(),strK0type.Data(),eventClass,cutVar.Data()));
143        AliAnalysisDataContainer *coutput_JetChem = mgr->CreateContainer(listName1, 
144                                                                         TList::Class(),
145                                                                         AliAnalysisManager::kOutputContainer,
146                                                                         Form("%s:PWG4_zimmerma_JetChem",AliAnalysisManager::GetCommonFileName()));
147        
148      }
149
150    if((IsArmenterosSelected == 1) && (IsJetPtBiasSelected == 0)){
151      TString listName2(Form("PWG4_JetChem_%s_%s_cl%d_Armenteros_%s",branchRecJets.Data(),strK0type.Data(),eventClass,cutVar.Data()));
152        AliAnalysisDataContainer *coutput_JetChem = mgr->CreateContainer(listName2, 
153                                                                         TList::Class(),
154                                                                         AliAnalysisManager::kOutputContainer,
155                                                                         Form("%s:PWG4_zimmerma_JetChem_Armenteros",AliAnalysisManager::GetCommonFileName()));
156        
157      }
158       
159    
160    if((IsArmenterosSelected == 0) && (IsJetPtBiasSelected == 1)) {
161      TString listName3(Form("PWG4_JetChem_%s_%s_cl%d_JetPtbias_%s",branchRecJets.Data(),strK0type.Data(),eventClass,cutVar.Data()));
162        AliAnalysisDataContainer *coutput_JetChem = mgr->CreateContainer(listName3, 
163                                                                         TList::Class(),
164                                                                         AliAnalysisManager::kOutputContainer,
165                                                                         Form("%s:PWG4_zimmerma_JetChem_JetPtBias",AliAnalysisManager::GetCommonFileName()));
166      }
167    
168    if((IsArmenterosSelected == 1) && (IsJetPtBiasSelected == 1)) {
169        TString listName4(Form("PWG4_JetChem_%s_%s_cl%d_Armenteros_JetPtBias_%s",branchRecJets.Data(),strK0type.Data(),eventClass,cutVar.Data()));
170        AliAnalysisDataContainer *coutput_JetChem = mgr->CreateContainer(listName4, 
171                                                                         TList::Class(),
172                                                                         AliAnalysisManager::kOutputContainer,
173                                                                         Form("%s:PWG4_zimmerma_JetChem_Armenteros_JetPtBias",AliAnalysisManager::GetCommonFileName()));
174      } 
175    
176
177
178
179
180    mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
181    mgr->ConnectOutput(task, 1, coutput_JetChem);
182    
183    return task;
184 }