]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/StrangenessInJets/macros/AddTaskJetChem.C
bugfix AOD Output AddTask macro
[u/mrichter/AliRoot.git] / PWGJE / StrangenessInJets / macros / AddTaskJetChem.C
1 AliAnalysisTaskJetChem *AddTaskJetChem(const char* recJetsBranch = "clustersAOD_ANTIKT02_B2_Filter00768_Cut00150_Skip00", 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)
2 {
3   // Creates a JetChem task,
4   // configures it and adds it to the analysis manager.
5   
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
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
61   task->SetCuttrackPosEta(0.8);
62   task->SetCuttrackNegEta(0.8);
63   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
64   task->SetCosOfPointingAngle(0.998);
65   task->SetAcceptKinkDaughters(kFALSE);//accept kink daughters -> dont use this cut anymore
66   task->SetRequireTPCRefit(kTRUE);
67   task->SetCutV0DecayMin(0.);//multiples of ctau, cut on 2D decay distance over transverse mom. (for K0s, Lambda, Antilambda)
68   task->SetCutV0DecayMax(5.);//multiples of ctau (for K0s, Lambda, Antilambda) Lee Barnby uses 3.0, use 5.0!!!!!
69   task->SetCutDcaV0Daughters(1.);//cut value in multiples of sigma default: 1.
70   task->SetCutDcaPosToPrimVertex(0.1); //cut value in cm 
71   task->SetCutDcaNegToPrimVertex(0.1); //cut value in cm
72   task->SetCutV0RadiusMin(5.);//in cm previous value was 0.9 cm
73   task->SetCutV0RadiusMax(100.);//in cm
74   task->SetCutBetheBloch(3.);//in units of sigma
75
76   //task->SetCutRatioTPC(0.8);//Cut on Ratio of crossed Rows over findable clusters in TPC -> not used anymore by Strangeness PAG group
77    //task->SetCuttrackPosNcls(70);
78   //task->SetCuttrackNegNcls(70);
79   //task->SetCuttrackPosRap(100000.0);
80   //task->SetCuttrackNegRap(100000.0);
81   //task->SetCutV0Rap(0.5);
82   //task->SetCutV0totMom(10000.);//tot Mom of V0s 
83
84   //Armenteros Cut:
85  
86   if(IsArmenterosSelected == 1){
87     task->SetCutArmenteros(0.2);
88   } else {
89     task->SetCutArmenteros(0.);
90   }
91   
92   if(IsJetPtBiasSelected == 1){
93     task->SetFFMinLTrackPt(5.);//at least one track must have a track-pt higher or equal than this JetMinPt value
94   } else {
95     task->SetFFMinLTrackPt(-1.);
96   }
97   
98   //------------------------------------
99   // Define histo bins
100   task->SetFFHistoBins();
101   task->SetQAJetHistoBins();
102   task->SetQATrackHistoBins();
103   task->SetFFInvMassHistoBins();
104   task->SetPhiCorrInvMassHistoBins();
105   task->SetFFInvMassLaHistoBins();
106   task->SetPhiCorrInvMassLaHistoBins();
107   
108   mgr->AddTask(task);
109   
110    // Create ONLY the output containers for the data produced by the task.
111    // Get and connect other common input/output containers via the manager as below
112    //==============================================================================
113
114    TString strK0type;
115    if(K0type ==  AliAnalysisTaskJetChem::kOnFly)     strK0type = "OnFly";
116    if(K0type ==  AliAnalysisTaskJetChem::kOnFlyPID)  strK0type = "OnFlyPID";
117    if(K0type ==  AliAnalysisTaskJetChem::kOnFlydEdx) strK0type = "OnFlydEdx";
118    if(K0type ==  AliAnalysisTaskJetChem::kOnFlyPrim) strK0type = "OnFlyPrim";
119    if(K0type ==  AliAnalysisTaskJetChem::kOffl)      strK0type = "Offl";
120    if(K0type ==  AliAnalysisTaskJetChem::kOfflPID)   strK0type = "OfflPID";
121    if(K0type ==  AliAnalysisTaskJetChem::kOffldEdx)  strK0type = "OffldEdx";
122    if(K0type ==  AliAnalysisTaskJetChem::kOfflPrim)  strK0type = "OfflPrim";
123
124    TString strLatype;
125    if(Latype ==  AliAnalysisTaskJetChem::kOnFly)     strLatype = "OnFly";
126    if(Latype ==  AliAnalysisTaskJetChem::kOnFlyPID)  strLatype = "OnFlyPID";
127    if(Latype ==  AliAnalysisTaskJetChem::kOnFlydEdx) strLatype = "OnFlydEdx";
128    if(Latype ==  AliAnalysisTaskJetChem::kOnFlyPrim) strLatype = "OnFlyPrim";
129    if(Latype ==  AliAnalysisTaskJetChem::kOffl)      strLatype = "Offl";
130    if(Latype ==  AliAnalysisTaskJetChem::kOfflPID)   strLatype = "OfflPID";
131    if(Latype ==  AliAnalysisTaskJetChem::kOffldEdx)  strLatype = "OffldEdx";
132    if(Latype ==  AliAnalysisTaskJetChem::kOfflPrim)  strLatype = "OfflPrim";
133
134    TString strALatype;
135    if(ALatype ==  AliAnalysisTaskJetChem::kOnFly)     strALatype = "OnFly";
136    if(ALatype ==  AliAnalysisTaskJetChem::kOnFlyPID)  strALatype = "OnFlyPID";
137    if(ALatype ==  AliAnalysisTaskJetChem::kOnFlydEdx) strALatype = "OnFlydEdx";
138    if(ALatype ==  AliAnalysisTaskJetChem::kOnFlyPrim) strALatype = "OnFlyPrim";
139    if(ALatype ==  AliAnalysisTaskJetChem::kOffl)      strALatype = "Offl";
140    if(ALatype ==  AliAnalysisTaskJetChem::kOfflPID)   strALatype = "OfflPID";
141    if(ALatype ==  AliAnalysisTaskJetChem::kOffldEdx)  strALatype = "OffldEdx";
142    if(ALatype ==  AliAnalysisTaskJetChem::kOfflPrim)  strALatype = "OfflPrim";
143    
144    if((IsArmenterosSelected == 0) && (IsJetPtBiasSelected == 0)){
145        TString listName1(Form("PWG4_JetChem_%s_%s_cl%d",branchRecJets.Data(),strK0type.Data(),eventClass));
146        AliAnalysisDataContainer *coutput_JetChem = mgr->CreateContainer(listName1, 
147                                                                         TList::Class(),
148                                                                         AliAnalysisManager::kOutputContainer,
149                                                                         Form("%s:PWG4_zimmerma_JetChem",AliAnalysisManager::GetCommonFileName()));
150        
151      }
152
153    if((IsArmenterosSelected == 1) && (IsJetPtBiasSelected == 0)){
154        TString listName2(Form("PWG4_JetChem_%s_%s_cl%d_Armenteros",branchRecJets.Data(),strK0type.Data(),eventClass));
155        AliAnalysisDataContainer *coutput_JetChem = mgr->CreateContainer(listName2, 
156                                                                         TList::Class(),
157                                                                         AliAnalysisManager::kOutputContainer,
158                                                                         Form("%s:PWG4_zimmerma_JetChem_Armenteros",AliAnalysisManager::GetCommonFileName()));
159        
160      }
161       
162    
163    if((IsArmenterosSelected == 0) && (IsJetPtBiasSelected == 1)) {
164        TString listName3(Form("PWG4_JetChem_%s_%s_cl%d_JetPtbias",branchRecJets.Data(),strK0type.Data(),eventClass));
165        AliAnalysisDataContainer *coutput_JetChem = mgr->CreateContainer(listName3, 
166                                                                         TList::Class(),
167                                                                         AliAnalysisManager::kOutputContainer,
168                                                                         Form("%s:PWG4_zimmerma_JetChem_JetPtBias",AliAnalysisManager::GetCommonFileName()));
169      }
170    
171    if((IsArmenterosSelected == 1) && (IsJetPtBiasSelected == 1)) {
172        TString listName4(Form("PWG4_JetChem_%s_%s_cl%d_Armenteros_JetPtBias",branchRecJets.Data(),strK0type.Data(),eventClass));
173        AliAnalysisDataContainer *coutput_JetChem = mgr->CreateContainer(listName4, 
174                                                                         TList::Class(),
175                                                                         AliAnalysisManager::kOutputContainer,
176                                                                         Form("%s:PWG4_zimmerma_JetChem_Armenteros_JetPtBias",AliAnalysisManager::GetCommonFileName()));
177      } 
178    
179
180
181
182
183    mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
184    mgr->ConnectOutput(task, 1, coutput_JetChem);
185    
186    return task;
187 }