12 #if !defined(__CINT__) || defined(__MAKECINT__) 16 #include "AliAnalysisManager.h" 54 const Bool_t bFillAOD = kFALSE,
55 const Int_t bMC = kFALSE,
56 const Bool_t exotic = kTRUE,
57 const TString name =
"V1Unfold",
60 const Int_t minEcell = 50,
61 const Int_t minEseed = 100,
62 const Int_t maxDeltaT = 250,
63 const Int_t timeWindow = 1000,
64 const Int_t minEUnf = 15,
65 const Int_t minFrac = 1,
66 const Bool_t bRecalE = kTRUE,
68 const Bool_t bRecalT = kTRUE,
69 const Bool_t bNonLine = kFALSE,
70 const Int_t minCen = -1,
71 const Int_t maxCen = -1,
72 const Float_t clusterEnergyCutEvent = -1,
73 const Int_t nRowDiff = 1,
74 const Int_t nColDiff = 1,
75 const Bool_t skipOrReject = kFALSE,
76 const Int_t tCardMimic = 0,
77 const Bool_t cellUpd = kTRUE
85 ::Error(
"AddTaskEMCALClusterize",
"No analysis manager to connect to.");
91 if (!mgr->GetInputEventHandler())
93 ::Error(
"AddTaskEMCALClusterize",
"This clusterize requires an input event handler");
97 printf(
"AddTaskEMCALClusterize() - Passed Settings :\n");
98 printf(
"\t mc %d, exo %d, name %s, trigger %s, tm %d\n",
99 bMC,exotic,name.Data(),trigger.Data(),tm);
100 printf(
"\t Ecell %d, Eseed %d, dT %d, wT %d, minUnf %d, minFrac %d \n",
101 minEcell, minEseed,maxDeltaT,timeWindow,minEUnf,minFrac);
102 printf(
"\t recalE %d, bad %d, recalT %d, nonlin %d, minCen %d, maxCen %d, rowDiff %d, colDiff %d, t-card %d, cell update %d \n",
103 bRecalE,bBad,bRecalT,bNonLine,minCen,maxCen,nRowDiff,nColDiff,tCardMimic,cellUpd);
106 TString arrayName = clusArrTit;
107 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);
108 else arrayName = Form(
"%s_Ecell%d_Eseed%d_DT%d_WT%d", name.Data(),minEcell,minEseed,maxDeltaT,timeWindow);
110 if(minCen != -1 && maxCen != -1)
111 arrayName+=Form(
"_Cen%d_%d",minCen,maxCen);
113 printf(
"AddTaskEMCALClusterize() - Created Branch Name: %s \n",arrayName.Data());
121 clusterize->SetAODBranchName(arrayName);
126 clusterize->SetCentralityBin(minCen, maxCen);
129 clusterize->SwitchOffFillAODCaloCells();
130 clusterize->SwitchOffFillAODHeader();
131 clusterize->FillAODFile(bFillAOD);
134 if ( cellUpd ) clusterize->SwitchOnUpdateCell();
140 AliEMCALRecParam * params = clusterize->GetRecParam();
151 if(maxDeltaT > 1) params->SetTimeCut(maxDeltaT*1.e-9);
152 else { params->SetTimeCut(250*1.e-9); printf(
"AddTaskEMCALClusterize() - default maxDeltaT = 250 ns\n"); }
156 params->SetTimeMin(-1*timeWindow*1.e-9);
157 params->SetTimeMax(timeWindow*1.e-9);
165 params->SetTimeMin(-250*1.e-9);
166 params->SetTimeMax( 250*1.e-9);
167 printf(
"AddTaskEMCALClusterize() - default time window for calibrated time -250 ns < T < 250 ns\n");
172 params->SetTimeMin(425*1.e-9);
173 params->SetTimeMax(825*1.e-9);
174 printf(
"AddTaskEMCALClusterize() - default time window 425 ns < T < 825 ns\n");
179 params->SetTimeMin(-100000000);
180 params->SetTimeMax( 100000000);
181 printf(
"AddTaskEMCALClusterize() - open time cut\n");
188 params->SetClusteringThreshold(minEseed/1.e3);
189 params->SetMinECut (minEcell/1.e3);
194 if(name.Contains(
"V2")) params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv2);
195 if(name.Contains(
"V1")) params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv1);
196 if(name.Contains(
"NxN"))
198 params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerNxN);
199 printf(
"AddTaskEMCALClusterize() - Set NxN cluster size to %dx%d (row diff %d, col diff %d)\n",
200 2*nRowDiff+1,2*nColDiff+1,nRowDiff,nColDiff);
201 params->SetNxM(nRowDiff, nColDiff);
209 if(name.Contains(
"JustUnfold"))
210 clusterize->JustUnfold(kTRUE);
212 clusterize->JustUnfold(kFALSE);
215 if (name.Contains(
"Unfold"))
217 clusterize->SwitchOnCellEnergySelection();
218 clusterize->SetCellCuts(minEUnf/1000.,minFrac/10000.);
219 clusterize->SetRejectBelowThreshold(skipOrReject);
220 printf(
"AliAnalysisTaskEMCALClusterize() - Unfolding Cuts: min E %f, frac %f\n",
221 minEUnf/1000.,minFrac/10000.);
224 if(!name.Contains(
"Just"))
225 params->SetUnfold(kTRUE);
227 params->SetUnfold(kFALSE);
241 clusterize->ConfigureEMCALRecoUtils(bMC,exotic,bNonLine,bRecalE,bBad,bRecalT);
248 clusterize->SwitchOnTrackMatching();
249 if ( tm == 2 ) clusterize->GetRecoUtils()->SwitchOnAODHybridTracksMatch();
250 else if ( tm == 1 ) clusterize->GetRecoUtils()->SwitchOnAODTPCOnlyTracksMatch();
251 else clusterize->GetRecoUtils()->SetAODTrackFilterMask(tm);
253 else clusterize->SwitchOffTrackMatching();
261 clusterize->SwitchOnLoadOwnGeometryMatrices();
267 if(clusterEnergyCutEvent > 0)
269 clusterize->SwitchOnSelectEMCALEvent();
270 clusterize->SetEMCALEnergyCut(clusterEnergyCutEvent);
271 clusterize->SetEMCALNcellsCut(3);
273 else clusterize->SwitchOffSelectEMCALEvent();
282 clusterize->SwitchOnUseClusterMCLabelForCell(0) ;
283 clusterize->SwitchOnRemapMCLabelForAODs() ;
299 clusterize->SwitchOffTCardCorrelation();
301 if(bMC && tCardMimic > 0)
303 if ( tCardMimic == 1 ) clusterize->SwitchOnTCardCorrelation(kFALSE);
304 else clusterize->SwitchOnTCardCorrelation(kTRUE);
308 for(
Int_t ism = 0; ism < 22; ism++)
309 clusterize->SetInducedEnergyLossProbabilityPerSM(1.0, ism);
311 clusterize->SetInducedTCardMinimumCellEnergy(0.01) ;
312 clusterize->SetInducedTCardMaximum(100) ;
313 clusterize->SetInducedTCardMaximumLowE(-1);
314 clusterize->SetInducedTCardMinimum(0.1);
316 clusterize->SwitchOnRandomizeTCardInducedEnergy() ;
318 clusterize->SetInducedEnergyLossMinimumFraction(0.35/100.);
319 clusterize->SetInducedEnergyLossMaximumFraction(1.6/100.);
325 clusterize->SetInducedEnergyLossFraction (mu1, mu1, mu1, 0.00000);
326 clusterize->SetInducedEnergyLossFractionP1(mu2, mu2, mu2, 0.00000);
327 clusterize->SetInducedEnergyLossFractionWidth(wid,wid,wid,0.00000);
332 clusterize->SetInducedEnergyLossFractionPerSM (3,mu1, mu1, mu1, 0.00000);
333 clusterize->SetInducedEnergyLossFractionP1PerSM(3,mu2, mu2, mu2, 0.00000);
334 clusterize->SetInducedEnergyLossMinimumFractionPerSM(0.6/100.,3);
335 clusterize->SetInducedEnergyLossMaximumFractionPerSM(1.8/100.,3);
339 clusterize->SetInducedEnergyLossFractionPerSM (7,mu1, mu1, mu1, 0.00000);
340 clusterize->SetInducedEnergyLossFractionP1PerSM(7,mu2, mu2, mu2, 0.00000);
341 clusterize->SetInducedEnergyLossMinimumFractionPerSM(0.6/100.,7);
342 clusterize->SetInducedEnergyLossMaximumFractionPerSM(1.8/100.,7);
347 clusterize->SetInducedEnergyLossFractionPerSM (1,mu1, mu1, mu1, 0.00000);
348 clusterize->SetInducedEnergyLossFractionP1PerSM(1,mu2, mu2, mu2, 0.00000);
349 clusterize->SetInducedEnergyLossMinimumFractionPerSM(0.5/100.,1);
351 clusterize->SetInducedEnergyLossFractionPerSM (10,mu1, mu1, mu1, 0.00000);
352 clusterize->SetInducedEnergyLossFractionP1PerSM(10,mu2, mu2, mu2, 0.00000);
353 clusterize->SetInducedEnergyLossMinimumFractionPerSM(0.5/100.,10);
355 clusterize->SetInducedEnergyLossFractionPerSM (11,mu1, mu1, mu1, 0.00000);
356 clusterize->SetInducedEnergyLossFractionP1PerSM(11,mu2, mu2, mu2, 0.00000);
357 clusterize->SetInducedEnergyLossMinimumFractionPerSM(0.5/100.,11);
361 clusterize->SetInducedEnergyLossFractionPerSM (2,mu1, mu1, mu1, 0.00000);
362 clusterize->SetInducedEnergyLossFractionP1PerSM(2,mu2, mu2, mu2, 0.00000);
363 clusterize->SetInducedEnergyLossMinimumFractionPerSM(0.45/100.,2);
372 printf(
"AddTaskEMCALClusterize() - trigger EMC7\n");
373 clusterize->SelectCollisionCandidates(AliVEvent::kEMC7);
375 else if (trigger==
"INT7")
377 printf(
"AddTaskEMCALClusterize() - trigger INT7\n");
378 clusterize->SelectCollisionCandidates(AliVEvent::kINT7);
380 else if(trigger==
"EMC1")
382 printf(
"AddTaskEMCALClusterize() - trigger EMC1\n");
383 clusterize->SelectCollisionCandidates(AliVEvent::kEMC1);
385 else if(trigger==
"MB")
387 printf(
"AddTaskEMCALClusterize() - trigger MB\n");
388 clusterize->SelectCollisionCandidates(AliVEvent::kMB);
390 else if(trigger==
"PHOS")
392 printf(
"AddTaskEMCALClusterize() - trigger PHOS\n");
393 clusterize->SelectCollisionCandidates(AliVEvent::kPHI7);
395 else if(trigger==
"PHOSPb")
397 printf(
"AddTaskEMCALClusterize() - trigger PHOSPb\n");
398 clusterize->SelectCollisionCandidates(AliVEvent::kPHOSPb);
400 else if(trigger==
"AnyINT")
402 printf(
"AddTaskEMCALClusterize() - trigger AnyINT\n");
403 clusterize->SelectCollisionCandidates(AliVEvent::kAnyINT);
405 else if(trigger==
"INT")
407 printf(
"AddTaskEMCALClusterize() - trigger AnyINT\n");
408 clusterize->SelectCollisionCandidates(AliVEvent::kAny);
410 else if(trigger==
"EMCEGA")
412 printf(
"AddTaskEMCALClusterize() - EMC Gamma\n");
413 clusterize->SelectCollisionCandidates(AliVEvent::kEMCEGA);
415 else if(trigger==
"EMCEJE")
417 printf(
"AddTaskEMCALClusterize() - trigger EMC Jet\n");
418 clusterize->SelectCollisionCandidates(AliVEvent::kEMCEJE);
420 else if(trigger==
"Central")
422 printf(
"AddTaskEMCALClusterize() - trigger Central\n");
423 clusterize->SelectCollisionCandidates(AliVEvent::kCentral);
425 else if(trigger==
"SemiCentral")
427 printf(
"AddTaskEMCALClusterize() - trigger SemiCentral\n");
428 clusterize->SelectCollisionCandidates(AliVEvent::kSemiCentral);
437 mgr->AddTask(clusterize);
440 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
441 mgr->ConnectInput (clusterize, 0, cinput1 );
445 printf(
"AddTaskEMCALClusterize() - Fill output AOD\n");
446 AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer() ;
447 mgr->ConnectOutput (clusterize, 0, coutput1 );
AliAnalysisTaskEMCALClusterize * AddTaskEMCALClusterize(const char *clusArrTit="EMCAL_Clusters_New", const Bool_t bFillAOD=kFALSE, const Int_t bMC=kFALSE, const Bool_t exotic=kTRUE, const TString name="V1Unfold", const TString trigger="", const Int_t tm=1, 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, const Int_t tCardMimic=0, const Bool_t cellUpd=kTRUE)
Reclusterize EMCal clusters, put them in a new branch for other following analysis.