39 const Bool_t bFillAOD = kFALSE,
40 const Int_t bMC = kFALSE,
41 const Bool_t exotic = kTRUE,
42 const TString name =
"V1Unfold",
45 const Int_t minEcell = 50,
46 const Int_t minEseed = 100,
47 const Int_t maxDeltaT = 250,
48 const Int_t timeWindow = 1000,
49 const Int_t minEUnf = 15,
50 const Int_t minFrac = 1,
51 const Bool_t bRecalE = kTRUE,
53 const Bool_t bRecalT = kTRUE,
54 const Bool_t bNonLine = kFALSE,
55 const Int_t minCen = -1,
56 const Int_t maxCen = -1,
57 const Float_t clusterEnergyCutEvent = -1,
58 const Int_t nRowDiff = 1,
59 const Int_t nColDiff = 1,
60 const Bool_t skipOrReject = kFALSE
68 ::Error(
"AddTaskEMCALClusterize",
"No analysis manager to connect to.");
74 if (!mgr->GetInputEventHandler())
76 ::Error(
"AddTaskEMCALClusterize",
"This clusterize requires an input event handler");
80 printf(
"Passed Settings : mc %d, exo %d, name %s, trigger %s, tm %d\n",bMC,exotic,name.Data(),trigger.Data(),tm);
81 printf(
" Ecell %d, Eseed %d, dT %d, wT %d, minUnf %d, minFrac %d \n",minEcell, minEseed,maxDeltaT,timeWindow,minEUnf,minFrac);
82 printf(
" recalE %d, bad %d, recalT %d, nonlin %d, minCen %d, maxCen %d, rowDiff %d, colDiff %d \n",bRecalE,bBad,bRecalT,bNonLine,minCen,maxCen,nRowDiff,nColDiff);
86 if(name.Contains(
"NxN")) arrayName = Form(
"%dx%d_Ecell%d_Eseed%d_DT%d_WT%d",2*nRowDiff+1,2*nColDiff+1,minEcell,minEseed,maxDeltaT,timeWindow);
87 else arrayName = Form(
"%s_Ecell%d_Eseed%d_DT%d_WT%d", name.Data(),minEcell,minEseed,maxDeltaT,timeWindow);
89 if(minCen != -1 && maxCen != -1)
90 arrayName+=Form(
"_Cen%d_%d",minCen,maxCen);
92 printf(
"Created Branch Name: %s \n",arrayName.Data());
101 clusterize->SetAODBranchName(arrayName);
106 clusterize->SetCentralityBin(minCen, maxCen);
109 clusterize->SwitchOffFillAODCaloCells();
110 clusterize->SwitchOffFillAODHeader();
111 clusterize->FillAODFile(bFillAOD);
114 if(tm) clusterize->SwitchOnTrackMatching();
115 else clusterize->SwitchOffTrackMatching();
121 AliEMCALRecParam * params = clusterize->GetRecParam();
132 if(maxDeltaT > 1) params->SetTimeCut(maxDeltaT*1.e-9);
133 else { params->SetTimeCut(250*1.e-9); printf(
"default maxDeltaT = 250 ns\n"); }
137 params->SetTimeMin(-1*timeWindow*1.e-9);
138 params->SetTimeMax(timeWindow*1.e-9);
146 params->SetTimeMin(-250*1.e-9);
147 params->SetTimeMax( 250*1.e-9);
148 printf(
"default time window for calibrated time -250 ns < T < 250 ns\n");
153 params->SetTimeMin(425*1.e-9);
154 params->SetTimeMax(825*1.e-9);
155 printf(
"default time window 425 ns < T < 825 ns\n");
160 params->SetTimeMin(-100000000);
161 params->SetTimeMax( 100000000);
162 printf(
"open time cut\n");
169 params->SetClusteringThreshold(minEseed/1.e3);
170 params->SetMinECut (minEcell/1.e3);
175 if(name.Contains(
"V2")) params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv2);
176 if(name.Contains(
"V1")) params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv1);
177 if(name.Contains(
"NxN"))
179 params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerNxN);
180 printf(
"Set NxN cluster size to %dx%d (row diff %d, col diff %d)\n",2*nRowDiff+1,2*nColDiff+1,nRowDiff,nColDiff);
181 params->SetNxM(nRowDiff, nColDiff);
189 if(name.Contains(
"JustUnfold"))
190 clusterize->JustUnfold(kTRUE);
192 clusterize->JustUnfold(kFALSE);
195 if (name.Contains(
"Unfold"))
197 clusterize->SwitchOnCellEnergySelection();
198 clusterize->SetCellCuts(minEUnf/1000.,minFrac/10000.);
199 clusterize->SetRejectBelowThreshold(skipOrReject);
200 printf(
"AliAnalysisTaskEMCALClusterize - Cuts: min E %f, frac %f\n",minEUnf/1000.,minFrac/10000.);
203 if(!name.Contains(
"Just"))
204 params->SetUnfold(kTRUE);
206 params->SetUnfold(kFALSE);
214 AliEMCALRecoUtils * reco = clusterize->GetRecoUtils();
216 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
226 clusterize->SwitchOnLoadOwnGeometryMatrices();
232 if(clusterEnergyCutEvent > 0)
234 clusterize->SwitchOnSelectEMCALEvent();
235 clusterize->SetEMCALEnergyCut(clusterEnergyCutEvent);
236 clusterize->SetEMCALNcellsCut(3);
238 else clusterize->SwitchOffSelectEMCALEvent();
246 printf(
"Recalculate MC labels\n");
247 clusterize->SwitchOnUseClusterMCLabelForCell(0) ;
248 clusterize->SwitchOnRemapMCLabelForAODs() ;
265 printf(
"Clusterizing task trigger EMC7\n");
266 clusterize->SelectCollisionCandidates(AliVEvent::kEMC7);
268 else if (trigger==
"INT7")
270 printf(
"Clusterizing task trigger INT7\n");
271 clusterize->SelectCollisionCandidates(AliVEvent::kINT7);
273 else if(trigger==
"EMC1")
275 printf(
"Clusterizing task trigger EMC1\n");
276 clusterize->SelectCollisionCandidates(AliVEvent::kEMC1);
278 else if(trigger==
"MB")
280 printf(
"Clusterizing task trigger MB\n");
281 clusterize->SelectCollisionCandidates(AliVEvent::kMB);
283 else if(trigger==
"PHOS")
285 printf(
"Clusterizing task trigger PHOS\n");
286 clusterize->SelectCollisionCandidates(AliVEvent::kPHI7);
288 else if(trigger==
"PHOSPb")
290 printf(
"Clusterizing task trigger PHOSPb\n");
291 clusterize->SelectCollisionCandidates(AliVEvent::kPHOSPb);
293 else if(trigger==
"AnyINT")
295 printf(
"Clusterizing task trigger AnyINT\n");
296 clusterize->SelectCollisionCandidates(AliVEvent::kAnyINT);
298 else if(trigger==
"INT")
300 printf(
"Clusterizing task trigger AnyINT\n");
301 clusterize->SelectCollisionCandidates(AliVEvent::kAny);
303 else if(trigger==
"EMCEGA")
305 printf(
"Clusterizing task trigger EMC Gamma\n");
306 clusterize->SelectCollisionCandidates(AliVEvent::kEMCEGA);
308 else if(trigger==
"EMCEJE")
310 printf(
"Clusterizing task trigger EMC Jet\n");
311 clusterize->SelectCollisionCandidates(AliVEvent::kEMCEJE);
313 else if(trigger==
"Central")
315 printf(
"Clusterizing task trigger Central\n");
316 clusterize->SelectCollisionCandidates(AliVEvent::kCentral);
318 else if(trigger==
"SemiCentral")
320 printf(
"Clusterizing task trigger SemiCentral\n");
321 clusterize->SelectCollisionCandidates(AliVEvent::kSemiCentral);
330 mgr->AddTask(clusterize);
333 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
334 mgr->ConnectInput (clusterize, 0, cinput1 );
338 printf(
"AddTaskEMCALClusterize - Fill output AOD\n");
339 AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer() ;
340 mgr->ConnectOutput (clusterize, 0, coutput1 );
AliAnalysisTaskEMCALClusterize * AddTaskEMCALClusterize(TString &arrayName, const Bool_t bFillAOD=kFALSE, const Int_t bMC=kFALSE, const Bool_t exotic=kTRUE, const TString name="V1Unfold", const TString trigger="", const Bool_t tm=kTRUE, const Int_t minEcell=50, const Int_t minEseed=100, const Int_t maxDeltaT=250, const Int_t timeWindow=1000, const Int_t minEUnf=15, const Int_t minFrac=1, const Bool_t bRecalE=kTRUE, const Bool_t bBad=kTRUE, const Bool_t bRecalT=kTRUE, const Bool_t bNonLine=kFALSE, const Int_t minCen=-1, const Int_t maxCen=-1, const Float_t clusterEnergyCutEvent=-1, const Int_t nRowDiff=1, const Int_t nColDiff=1, const Bool_t skipOrReject=kFALSE)
Reclusterize EMCal clusters, put them in a new branch for other following analysis.