]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/macros/AddTaskJetSpectrum2.C
end-of-line normalization
[u/mrichter/AliRoot.git] / PWGJE / macros / AddTaskJetSpectrum2.C
1 Bool_t ConfigWithFlagsJetSpectrum2();
2 AliAnalysisTaskJetSpectrum2 *jetspec = 0;
3
4 AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec = "jets",const char* bGen = "jetsAODMC_UA104",const char* nonStdFile="",UInt_t filterMask = 32, Int_t iPhysicsSelectionFlag = AliVEvent::kMB,Int_t hjet=0, UInt_t iEventSelectionMask = 0,Int_t iCl = 0, Bool_t bRCSparseDimensions = kFALSE);
5
6
7 AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2Delta(UInt_t filterMask = 32,Bool_t kUseAODMC = kFALSE,Int_t iPhysicsSelectionFlag = AliVEvent::kMB,Int_t hjet=0,UInt_t iFlag = 0xfffffff, UInt_t iEventSelectionMask = 0,char* back = ""){
8
9   TString cBack = back;
10
11   AliAnalysisTaskJetSpectrum2 *js = 0;
12   if(kUseAODMC){
13     if(iFlag&(1<<0)){ // UA104
14       js = AddTaskJetSpectrum2("jets","jetsAODMC_UA104",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask);
15       js = AddTaskJetSpectrum2("jets","jetsAODMC2_UA104",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask);
16     }
17     if(iFlag&(1<<1)){ // ANTIKT 04
18       js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC_FASTJET04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask);
19       js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC2_FASTJET04",cBack.Data(),filterMask,iPhysicsSelectionFlag,  iEventSelectionMask);
20       // cross check MC only background subtration
21       js = AddTaskJetSpectrum2("jetsAODMC2_FASTJET04","jetsAODMC_FASTJET04",cBack.Data(),filterMask,iPhysicsSelectionFlag,  iEventSelectionMask);
22     }
23     if(iFlag&(1<<2)){ // KT 04
24       js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC_FASTKT04",cBack.Data(),filterMask,iPhysicsSelectionFlag,iEventSelectionMask);
25       js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC2_FASTKT04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask);
26     }
27     if(iFlag&(1<<3)){ // SISCONE 04
28       js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","jetsAODMC_SISCONE04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask);
29       js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","jetsAODMC2_SISCONE04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask);
30     }
31     // here can go other radii
32   }
33   else { // only the data ... no MC
34     if(iFlag&(1<<0)){ // UA104
35       js = AddTaskJetSpectrum2("jets","",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,1);
36     }
37     if(iFlag&(1<<1)){ // ANTIKT 04
38       js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask);
39     }
40     if(iFlag&(1<<2)){ // KT 04
41       js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","",cBack.Data(),filterMask,iPhysicsSelectionFlag,iEventSelectionMask);
42     }
43     if(iFlag&(1<<3)){ // SISCONE 04
44       js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask);
45     }
46   }
47   return js;
48 }
49
50
51 AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec,const char* bGen ,const char* nonStdFile,UInt_t filterMask,Int_t iPhysicsSelectionFlag,Int_t hjet, UInt_t iEventSelectionMask,Int_t iCl, Bool_t bRCSparseDimensions)
52 {
53   // Creates a jet fider task, configures it and adds it to the analysis manager.
54   // Get the pointer to the existing analysis manager via the static access method.
55   //==============================================================================
56   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
57   if (!mgr) {
58      ::Error("AddTaskJetSpectrum2", "No analysis manager to connect to.");
59     return NULL;
60    }  
61   
62   // Check the analysis type using the event handlers connected to the analysis manager.
63   //==============================================================================
64   if (!mgr->GetInputEventHandler()) {
65     ::Error("AddTaskJetSpectrum2", "This task requires an input event handler");
66     return NULL;
67   }
68   
69   TString type = mgr->GetInputEventHandler()->GetDataType();
70   TString typeRec(bRec);
71   TString typeGen(bGen);
72   typeGen.ToUpper();
73   typeRec.ToUpper();
74   
75
76    // Create the task and configure it.
77    //===========================================================================
78
79    jetspec = new  AliAnalysisTaskJetSpectrum2(Form("JetSpectrum2%s-%s_%010d_Class%02d",bRec,bGen,iEventSelectionMask,iCl));
80    if(iCl)jetspec->SetEventClass(iCl);
81
82    // add the filter mask for non default jets branches
83    TString cAdd("");
84    cAdd += Form("_Filter%05d",filterMask);
85
86    
87    jetspec->SetTRP(hjet);
88    jetspec->SetBranchGen(bGen); 
89    //  if(typeGen.Contains("JETSAOD")&&!typeGen.Contains("MC"))jetspec->SetBranchGen(Form("%s%s",bGen,cAdd.Data())); 
90
91    jetspec->SetBranchRec(bRec); 
92    // if(typeRec.Contains("JETSAOD")&&!typeRec.Contains("MC"))     jetspec->SetBranchRec(Form("%s%s",bRec,cAdd.Data())); 
93
94
95
96    if(type == "AOD"){
97      // Assume all jets are not yet produced 
98      //     jetspec->SetAODJetInput(kTRUE);
99      jetspec->SetAODTrackInput(kTRUE);
100      jetspec->SetAODMCInput(kTRUE);
101    }
102    else{
103      if(mgr->GetMCtruthEventHandler()){
104        jetspec-> SetAnalysisType(AliAnalysisTaskJetSpectrum2::kAnaMCESD);
105      }
106    }
107
108    if(typeRec.Contains("AODMC2b")){// work down from the top AODMC2b -> AODMC2 -> AODMC -> AOD
109      jetspec->SetTrackTypeRec(AliAnalysisTaskJetSpectrum2::kTrackAODMCChargedAcceptance);
110    }
111    else if (typeRec.Contains("AODMC2")){
112      jetspec->SetTrackTypeRec(AliAnalysisTaskJetSpectrum2::kTrackAODMCCharged);
113    }
114    else if (typeRec.Contains("AODMC")){
115      jetspec->SetTrackTypeRec(AliAnalysisTaskJetSpectrum2::kTrackAODMCAll);
116    }
117    else { // catch akk use AOD
118      jetspec->SetTrackTypeRec(AliAnalysisTaskJetSpectrum2::kTrackAOD);
119    }
120
121    if(typeGen.Contains("AODMC2b")){// work down from the top AODMC2b -> AODMC2 -> AODMC -> AOD
122      jetspec->SetTrackTypeGen(AliAnalysisTaskJetSpectrum2::kTrackAODMCChargedAcceptance);
123    }
124    else if (typeGen.Contains("AODMC2")){
125      jetspec->SetTrackTypeGen(AliAnalysisTaskJetSpectrum2::kTrackAODMCCharged);
126    }
127    else if (typeGen.Contains("AODMC")){
128      jetspec->SetTrackTypeGen(AliAnalysisTaskJetSpectrum2::kTrackAODMCAll);
129    }
130    else if (typeGen.Length()>0){ // catch all use AOD
131      jetspec->SetTrackTypeGen(AliAnalysisTaskJetSpectrum2::kTrackAOD);
132    }
133
134    if(iEventSelectionMask)jetspec->SetEventSelectionMask(iEventSelectionMask);
135
136    //   jetspec->SetDebugLevel(10);
137    if(!ConfigWithFlagsJetSpectrum2())return 0;
138
139    jetspec->SetUseGlobalSelection(kTRUE); 
140    jetspec->SetMinJetPt(-1.);//keep all jets 
141
142    if(bRCSparseDimensions) {
143      jetspec->SetNRPBins(100);
144      jetspec->SetNMultBins(1);
145      jetspec->SetNPtLeadingBins(1);
146    }
147    
148    // to fetch the AOD from the AOD extension ouput 
149    if(strlen(nonStdFile))jetspec->SetNonStdFile(nonStdFile);
150    mgr->AddTask(jetspec);
151      
152    // Create ONLY the output containers for the data produced by the task.
153    // Get and connect other common input/output containers via the manager as below
154    //==============================================================================
155    AliAnalysisDataContainer *coutput1_Spec = ;
156    if(hjet>0)
157      coutput1_Spec = mgr->CreateContainer(Form("pwgje_spec2_%s_%s_%010d_Class%02d_HJ%d",bRec,bGen,iEventSelectionMask,iCl,hjet),TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWGJE_spec2_%s_%s_%010d_Class%02d_HJ%d",AliAnalysisManager::GetCommonFileName(),bRec,bGen,iEventSelectionMask,iCl,hjet));
158    else
159      coutput1_Spec = mgr->CreateContainer(Form("pwgje_spec2_%s_%s_%010d_Class%02d",bRec,bGen,iEventSelectionMask,iCl),TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWGJE_spec2_%s_%s_%010d_Class%02d",AliAnalysisManager::GetCommonFileName(),bRec,bGen,iEventSelectionMask,iCl));
160
161    mgr->ConnectInput  (jetspec, 0, mgr->GetCommonInputContainer());
162    mgr->ConnectOutput (jetspec, 0, mgr->GetCommonOutputContainer());
163    mgr->ConnectOutput (jetspec,  1, coutput1_Spec );
164    
165    return jetspec;
166 }
167
168 void SetAODInput(AliAnalysisTaskJetSpectrum2 *taskJetSpectrum){
169   taskJetSpectrum->SetAODJetInput(kTRUE);
170   taskJetSpectrum->SetAODTrackInput(kTRUE);
171   // taskJetSpectrum->SetUseGlobalSelection(kFALSE);
172 }
173
174 Bool_t ConfigWithFlagsJetSpectrum2(){
175     
176   Bool_t bGood1 = kFALSE;
177   Bool_t bGood2 = kFALSE;
178
179   
180   Int_t nTrigger = AliAnalysisManager::GetGlobalInt("kNTrigger",bGood1);
181   
182   if(bGood1){
183     jetspec->SetNTrigger(nTrigger);
184     for(int it = 0;it < nTrigger;it++){
185       jetspec->SetTrigger(it,
186                           AliAnalysisManager::GetGlobalInt(Form("kTriggerBit%d",it),bGood1),
187                           AliAnalysisManager::GetGlobalStr(Form("kTriggerName%d",it),bGood2));
188     }
189    }
190    else {
191      Printf("%s%d: kNTrigger not defined",(char*)__FILE__,__LINE__); return kFALSE; 
192    }
193
194
195   Int_t nAcceptance = AliAnalysisManager::GetGlobalInt("kNAcceptanceSpec",bGood1);
196   
197   if(bGood1){
198     jetspec->SetNAcceptance(nAcceptance);
199     for(int ia = 0;ia < nAcceptance;ia++){
200       jetspec->SetAcceptance(ia,
201                              AliAnalysisManager::GetGlobalDbl(Form("kAcceptancePhiMinSpec%d",ia),bGood1),
202                              AliAnalysisManager::GetGlobalDbl(Form("kAcceptancePhiMaxSpec%d",ia),bGood1),
203                              AliAnalysisManager::GetGlobalDbl(Form("kAcceptanceEtaMinSpec%d",ia),bGood1),
204                              AliAnalysisManager::GetGlobalDbl(Form("kAcceptanceEtaMaxSpec%d",ia),bGood1));
205     }
206    }
207    else {
208      Printf("%s%d: kNAcceptance not defined",(char*)__FILE__,__LINE__); 
209    }
210
211      
212    AliAnalysisManager::GetGlobalInt("kPhysicsSelectionFlag",bGood1);if(bGood1){
213      jetspec->SelectCollisionCandidates(AliAnalysisManager::GetGlobalInt("kPhysicsSelectionFlag",bGood1));
214    }
215    else {Printf("%s%d: kPhysicsSelectionFlag not defined",(char*)__FILE__,__LINE__); return kFALSE; }
216
217
218    AliAnalysisManager::GetGlobalStr("kDeltaAODJetName",bGood1);if(bGood1)jetspec->SetNonStdFile(AliAnalysisManager::GetGlobalStr("kDeltaAODJetName",bGood1));
219    else {Printf("%s%d: kDeltaAODJetName not defined",(char*)__FILE__,__LINE__); return kFALSE; }
220
221    AliAnalysisManager::GetGlobalDbl("kTrackEtaWindow",bGood1);if(bGood1)jetspec->SetTrackEtaWindow(AliAnalysisManager::GetGlobalDbl("kTrackEtaWindow",bGood1));
222    else {Printf("%s%d: kTrackEtaWindow not defined",(char*)__FILE__,__LINE__); return kFALSE; }
223
224    AliAnalysisManager::GetGlobalDbl("kJetEtaWindow",bGood1);if(bGood1)jetspec->SetJetEtaWindow(AliAnalysisManager::GetGlobalDbl("kJetEtaWindow",bGood1));
225    else {Printf("%s%d: kJetEtaWindow not defined",(char*)__FILE__,__LINE__); return kFALSE; }
226
227    
228    AliAnalysisManager::GetGlobalInt("kHighPtFilterMask",bGood1);if(bGood1)jetspec->SetFilterMask(AliAnalysisManager::GetGlobalInt("kHighPtFilterMask",bGood1));
229    else {Printf("%s%d: kHighPtFilterMask not defined",(char*)__FILE__,__LINE__); return kFALSE; }   
230    
231    return kTRUE;
232
233
234 }