]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/EMCALTasks/macros/AddTaskEmcalCaloTrackCorr.C
TENDER becomes Tender, removing .so
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / macros / AddTaskEmcalCaloTrackCorr.C
1 Bool_t   kSimulation    = kFALSE;
2 TString  fDataType      = "AOD"; 
3 Int_t    kYears         = 2011;
4 TString  kCollisions    = "PbPb";
5 TString  fTrigger       = "EMCGA";
6 Bool_t   kEventTriggerAtTaskSE = kFALSE;
7 Float_t  fMinCen        = -1;
8 Float_t  fMaxCen        = -1;
9 TString  fAnaMesonType  = "Pi0";
10 Bool_t   kAnaPhotonCorr = kTRUE;
11 Bool_t   kAnaMesonCorr  = kFALSE; 
12 Bool_t   kTimeCut      = kFALSE;
13 Bool_t   kDistBC       = kTRUE;
14 Bool_t   kRecalClus    = kTRUE;
15 Bool_t   kRecalClusE   = kTRUE;
16 Bool_t   kRecalClusPos = kTRUE;
17 Bool_t   kRecalClusSSA = kTRUE;
18 Bool_t   kNonLin       = kTRUE;
19 Bool_t   kTM           = kFALSE;
20 Float_t  fDPhiCut      = 0.03;
21 Float_t  fDEtaCut      = 0.025;
22 Bool_t   kExotic       = kTRUE;
23 Float_t  fExoticFraction = 0.95;///for pp:0.97, for PbPb:0.95
24 Bool_t   kFidul          = kFALSE;
25 Bool_t   kReClusterier   = kFALSE;
26 TString  fName           = "V2";
27 Float_t  fMinCell        = 0.1;
28 Float_t  fMinSeed        = 0.3;
29
30 AliAnalysisTaskEMCALCaloTrackCorr *AddTaskEmcalCaloTrackCorr(
31   const TString  data          = "AOD",
32   const TString  coll          = "pp",
33   const Bool_t   simulation    = kFALSE,
34   const TString  trigger       = "MB", 
35   const Bool_t   triggerSE     = kFALSE,
36   const Float_t  minCen        = -1,
37   const Float_t  maxCen        = -1,
38   const Bool_t   anaPhotonCorr = kTRUE,
39   const Bool_t   anaMesonCorr  = kFALSE,
40   const TString  anaMesonType  = "Pi0",
41   const Bool_t   timecut       = kFALSE,
42   const Bool_t   tm            = kFALSE,
43   const Float_t  dphicut       = 0.03,
44   const Float_t  detacut       = 0.025,
45   const Bool_t   exotic       = kTRUE,
46   const Float_t  exoticFraction = 0.95,
47   const Bool_t   reClusterizer  = kFALSE,
48   const TString  name          = "V2",
49   const Float_t  minCell       = 0.1,
50   const Float_t  minSeed       = 0.3)
51 {
52   fDataType      = data;
53   kCollisions    = coll;
54   kSimulation    = simulation;
55   fTrigger       = trigger;
56   kEventTriggerAtTaskSE = triggerSE;
57   fMinCen        = minCen;
58   fMaxCen        = maxCen;
59   fAnaMesonType  = anaMesonType;
60   kAnaPhotonCorr = anaPhotonCorr;
61   kAnaMesonCorr  = anaMesonCorr;
62   kTimeCut      = timecut;
63   kTM           = tm;
64   fDPhiCut      = dphicut;
65   fDEtaCut      = detacut;
66   kExotic       = exotic;
67   fExoticFraction = exoticFraction;
68   kReClusterier   = reClusterizer;
69   fName           = name;
70   fMinCell        = minCell;
71   fMinSeed        = minSeed;
72   
73   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
74   if (!mgr) 
75   {
76     ::Error("AddTask", "No analysis manager to connect to.");
77     return NULL;
78   }  
79
80   if (!mgr->GetInputEventHandler())
81   {
82     ::Error("AddTaskHadCorr", "This task requires an input event handler");
83     return NULL;
84   }
85  
86   if(fDataType == "ESD"){ 
87    gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
88    AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10041004);
89    esdTrackCuts->SetEtaRange(-0.8,0.8);
90   }
91
92   AliAnalysisTaskEMCALCaloTrackCorr *task = new AliAnalysisTaskEMCALCaloTrackCorr("NeutralCorr"); 
93   task->SetMC(kSimulation);
94   task->SetDataType(fDataType);
95   if(fDataType == "ESD")task->SetTrackCuts(esdTrackCuts);
96   if(fDataType == "AOD") task->SwitchOnAODHybridTrackSelection();
97   task->SetTrackMatchedDPhiCut(fDPhiCut);
98   task->SetTrackMatchedDEtaCut(fDEtaCut);
99   task->SetLargeCorrTrigger(5, 50);
100
101   if(kAnaPhotonCorr && !kAnaMesonCorr){
102    task->SwitchOnAnaPhotonCorr();
103    task->SwitchOffAnaMesonCorr();
104    task->SwitchOffFillMesonAOD();
105   }
106   else if(!kAnaPhotonCorr && kAnaMesonCorr){
107    task->SwitchOffAnaPhotonCorr();
108    task->SwitchOnAnaMesonCorr();
109    task->SetAnaMesonType(fAnaMesonType);
110    task->SwitchOnFillMesonAOD();
111   }
112   else {
113    task->SwitchOffAnaPhotonCorr();
114    task->SwitchOffAnaMesonCorr();
115   } 
116   
117   task->SetCentralityClass("V0M");
118   task->SetCentralityBin(fMinCen,fMaxCen); 
119   task->SetEventPlaneMethod("V0");
120   task->SetEMCALGeometryName("EMCAL_COMPLETEV1");
121   mgr->AddTask(task);
122
123   if(kCollisions =="pp")   task->SwitchOnTrackMultBins();
124   if(kCollisions =="PbPb") task->SwitchOffTrackMultBins();
125
126   task->SetDeltaPhiCutRange(TMath::Pi()/2., 3*TMath::Pi()/2.);
127   task->SetNTriggPtBins(2);
128   Float_t fTriggerPtBins[3]={8,15,25};
129   task->SetTriggerBins(fTriggerPtBins);
130   task->SetNAssocPtBins(5);
131   Float_t fAssociatedPtBins[6]={0.5, 1, 2, 4, 6, 15};
132   task->SetAssociatedBins(fAssociatedPtBins);   
133
134   ConfigureTrigger(task);
135
136   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
137  
138  if(kAnaPhotonCorr && !kAnaMesonCorr) {
139     AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("InclusivePhotonCen%.1f_%.1f",fMinCen, fMaxCen), TList::Class(),
140                             AliAnalysisManager::kOutputContainer, "AnalysisResults.root");  
141    }
142    else if (!kAnaPhotonCorr && kAnaMesonCorr){
143     AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("Inclusive%sCen%.1f_%.1f", fAnaMesonType.Data(),fMinCen, fMaxCen), TList::Class(),
144                              AliAnalysisManager::kOutputContainer, "AnalysisResults.root");
145    }
146    else {
147     AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("InclusiveNoCorrCen%.1f_%.1f", fMinCen, fMaxCen), TList::Class(),
148                              AliAnalysisManager::kOutputContainer, "AnalysisResults.root");
149    }
150     mgr->ConnectInput(task, 0, cinput);
151     mgr->ConnectOutput(task, 1, coutputpt1);
152     return task;
153
154 }
155
156 void ConfigureTrigger(AliAnalysisTaskEMCALCaloTrackCorr *task1)
157 {
158   if(!kEventTriggerAtTaskSE){
159    task1->SwitchOffEventTriggerAtSE();
160    if(fTrigger=="EMC7"){
161     printf("CaloTrackCorr trigger EMC7\n");
162     task1->SetEventTriggerMask(AliVEvent::kEMC7);
163    }
164    else if (fTrigger=="INT7"){
165     printf("CaloTrackCorr trigger INT7\n");
166     task1->SetEventTriggerMask(AliVEvent::kINT7);
167    }
168    else if(fTrigger=="EMC1"){
169     printf("CaloTrackCorr trigger EMC1\n");
170     task1->SetEventTriggerMask(AliVEvent::kEMC1);
171    }
172    else if(fTrigger=="MB"){
173     printf("CaloTrackCorr trigger MB\n");
174     task1->SetEventTriggerMask(AliVEvent::kMB);
175    }  
176    else if(fTrigger=="AnyINT"){
177     printf("CaloTrackCorr trigger AnyINT\n");
178     task1->SetEventTriggerMask(AliVEvent::kAnyINT);
179    }  
180    else if(fTrigger=="EMCEGA"){
181     printf("CaloTrackCorr trigger EMC Gamma\n");
182     task1->SetEventTriggerMask(AliVEvent::kEMCEGA);
183    } 
184    else if(fTrigger=="EMCEJE"){
185     printf("CaloTrackCorr trigger EMC Jet\n");
186     task1->SetEventTriggerMask(AliVEvent::kEMCEJE);
187    }
188    else if(fTrigger=="Central"){
189     printf("CaloTrackCorr trigger Central\n");
190     task1->SetEventTriggerMask(AliVEvent::kCentral);
191    } 
192    else if(fTrigger=="SemiCentral"){
193     printf("CaloTrackCorr trigger SemiCentral\n");
194     task1->SetEventTriggerMask(AliVEvent::kSemiCentral);
195    }
196    else if(fTrigger=="SemiOrCentral"){
197     printf("CaloTrackCorr trigger SemiCentral Or Central\n");
198     task->SetEventTriggerMask(AliVEvent::kSemiCentral | AliVEvent::kCentral);
199    }
200    else{
201     task1->SetEventTriggerMask(AliVEvent::kAny);
202    }
203
204   }
205   else {
206    task1->SwitchOnEventTriggerAtSE();
207    if(fTrigger=="EMC7"){
208     printf("CaloTrackCorr trigger EMC7\n");
209     task1->SelectCollisionCandidates(AliVEvent::kEMC7);
210    }
211    else if (fTrigger=="INT7"){
212     printf("CaloTrackCorr trigger INT7\n");
213     task1->SelectCollisionCandidates(AliVEvent::kINT7);
214    }
215    else if(fTrigger=="EMC1"){
216     printf("CaloTrackCorr trigger EMC1\n");
217     task1->SelectCollisionCandidates(AliVEvent::kEMC1);
218    }
219    else if(fTrigger=="MB"){
220     printf("CaloTrackCorr trigger MB\n");
221     task1->SelectCollisionCandidates(AliVEvent::kMB);
222    }  
223    else if(fTrigger=="AnyINT"){
224     printf("CaloTrackCorr trigger AnyINT\n");
225     task1->SelectCollisionCandidates(AliVEvent::kAnyINT);
226    }  
227    else if(fTrigger=="EMCEGA"){
228     printf("CaloTrackCorr trigger EMC Gamma\n");
229     task1->SelectCollisionCandidates(AliVEvent::kEMCEGA);
230    } 
231    else if(fTrigger=="EMCEJE"){
232     printf("CaloTrackCorr trigger EMC Jet\n");
233     task1->SelectCollisionCandidates(AliVEvent::kEMCEJE);
234    }
235    else if(fTrigger=="Central"){
236     printf("CaloTrackCorr trigger Central\n");
237     task1->SelectCollisionCandidates(AliVEvent::kCentral);
238    } 
239    else if(fTrigger=="SemiCentral"){
240     printf("CaloTrackCorr trigger SemiCentral\n");
241     task1->SelectCollisionCandidates(AliVEvent::kSemiCentral);
242    }
243    else if(fTrigger=="SemiOrCentral"){
244     printf("CaloTrackCorr trigger SemiCentral Or Central\n");
245     task->SelectCollisionCandidates(AliVEvent::kSemiCentral | AliVEvent::kCentral);
246    }
247    else{
248     task1->SelectCollisionCandidates(AliVEvent::kAny);
249    }
250   }
251
252 }