20 Int_t runNumber = 170000,
21 Bool_t useKineFilter=kTRUE,
22 Int_t tofTimeZeroType=AliESDpid::kTOF_T0,
23 Bool_t enableTPCOnlyAODTracks=kFALSE,
24 Bool_t disableCascades=kFALSE,
25 Bool_t disableKinks=kFALSE,
33 ::Error(
"AddTaskESDFilter",
"No analysis manager to connect to.");
40 TString type = mgr->GetInputEventHandler()->GetDataType();
41 if (!type.Contains(
"ESD")) {
42 ::Error(
"AddTaskESDFilter",
"ESD filtering task needs the manager to have an ESD input handler.");
46 AliAODHandler *aod_h = (AliAODHandler*)mgr->GetOutputEventHandler();
48 ::Error(
"AddTaskESDFilter",
"ESD filtering task needs the manager to have an AOD output handler.");
52 AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
53 if (!mcH && useKineFilter) {
54 ::Error(
"AddTaskESDFilter",
"No MC handler connected while kine filtering requested");
62 esdfilter->DisableZDC();
63 esdfilter->DisablePmdClusters();
70 reco->SwitchOnRejectExoticCluster();
73 AliOADBContainer *contBC=
new AliOADBContainer(
"");
74 contBC->InitFromFile(AliDataFile::GetFileNameOADB(
"EMCAL/EMCALBadChannels.root").data(),
"AliEMCALBadChannels");
80 reco->SwitchOnBadChannelsRemoval();
81 printf(
"*** EMCAL RecoUtils : REMOVE bad cells \n");
83 for (
Int_t i=0; i<10; ++i) {
84 TH2I *hbm = reco->GetEMCALChannelStatusMap(i);
87 hbm=(TH2I*)arrayBCpass->FindObject(Form(
"EMCALBadChannelMap_Mod%d",i));
90 AliError(Form(
"Can not get EMCALBadChannelMap_Mod%d",i));
95 reco->SetEMCALChannelStatusMap(i,hbm);
97 }
else printf(
"AliEMCALRecoUtils ---Do NOT remove bad channels 1\n");
98 }
else printf(
"AliEMCALRecoUtils ---Do NOT remove bad channels 2\n");
102 esdfilter->SetTimeZeroType(tofTimeZeroType);
103 if (disableCascades) esdfilter->DisableCascades();
104 if (disableKinks) esdfilter->DisableKinks();
106 mgr->AddTask(esdfilter);
113 AliAnalysisTaskMCParticleFilter *kinefilter = 0;
115 kinefilter =
new AliAnalysisTaskMCParticleFilter(
"Particle Kine Filter");
116 mgr->AddTask(kinefilter);
120 if((runFlag/100)==10){
129 AliESDv0Cuts* esdV0Cuts =
new AliESDv0Cuts(
"Standard V0 Cuts pp",
"ESD V0 Cuts");
130 esdV0Cuts->SetMinRadius(0.2);
131 esdV0Cuts->SetMaxRadius(200);
132 esdV0Cuts->SetMinDcaPosToVertex(0.05);
133 esdV0Cuts->SetMinDcaNegToVertex(0.05);
134 esdV0Cuts->SetMaxDcaV0Daughters(1.5);
135 esdV0Cuts->SetMinCosinePointingAngle(0.99);
136 AliAnalysisFilter* v0Filter =
new AliAnalysisFilter(
"v0Filter");
137 v0Filter->AddCuts(esdV0Cuts);
139 esdfilter->SetV0Filter(v0Filter);
144 mgr->ConnectInput (esdfilter, 0, mgr->GetCommonInputContainer());
145 mgr->ConnectOutput (esdfilter, 0, mgr->GetCommonOutputContainer());
147 mgr->ConnectInput (kinefilter, 0, mgr->GetCommonInputContainer());
148 mgr->ConnectOutput (kinefilter, 0, mgr->GetCommonOutputContainer());
149 AliAnalysisDataContainer *coutputEx = mgr->CreateContainer(
"cFilterList", TList::Class(),
150 AliAnalysisManager::kOutputContainer,
"pyxsec_hists.root");
151 mgr->ConnectOutput (kinefilter, 1,coutputEx);
158 Printf(
"%s%d: Creating Track Cuts for LH10h",(
char*)__FILE__,__LINE__);
161 AliESDtrackCuts* esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
164 AliESDtrackCuts* esdTrackCutsITSsa =
new AliESDtrackCuts(
"ITS stand-alone Track Cuts",
"ESD Track Cuts");
165 esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE);
168 AliESDtrackCuts *itsStrong =
new AliESDtrackCuts(
"ITSorSPD",
"pixel requirement for ITS");
169 itsStrong->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
173 AliESDpidCuts *electronID =
new AliESDpidCuts(
"Electrons",
"Electron PID cuts");
174 electronID->SetTPCnSigmaCut(AliPID::kElectron, 3.);
184 AliESDtrackCuts *jetCuts1006 =
new AliESDtrackCuts(
"AliESDtrackCuts");
186 TFormula *f1NClustersTPCLinearPtDep =
new TFormula(
"f1NClustersTPCLinearPtDep",
"70.+30./20.*x");
187 jetCuts1006->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep,20.);
188 jetCuts1006->SetMinNClustersTPC(70);
189 jetCuts1006->SetMaxChi2PerClusterTPC(4);
190 jetCuts1006->SetRequireTPCStandAlone(kTRUE);
191 jetCuts1006->SetAcceptKinkDaughters(kFALSE);
192 jetCuts1006->SetRequireTPCRefit(kTRUE);
193 jetCuts1006->SetMaxFractionSharedTPCClusters(0.4);
195 jetCuts1006->SetRequireITSRefit(kTRUE);
197 jetCuts1006->SetMaxDCAToVertexXY(2.4);
198 jetCuts1006->SetMaxDCAToVertexZ(3.2);
199 jetCuts1006->SetDCAToVertex2D(kTRUE);
201 jetCuts1006->SetMaxChi2PerClusterITS(36);
202 jetCuts1006->SetMaxChi2TPCConstrainedGlobal(36);
204 jetCuts1006->SetRequireSigmaToVertex(kFALSE);
206 jetCuts1006->SetEtaRange(-0.9,0.9);
207 jetCuts1006->SetPtRange(0.15, 1E+15.);
209 AliESDtrackCuts* esdTrackCutsHG0 = jetCuts1006->Clone(
"JetCuts10001006");
210 esdTrackCutsHG0->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
222 AliESDtrackCuts* esdTrackCutsHG1 = jetCuts1006->Clone(
"JetCuts10011006");
223 esdTrackCutsHG1->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
228 AliESDtrackCuts* esdTrackCutsHG2 = jetCuts1006->Clone(
"JetCuts10021006");
229 esdTrackCutsHG2->SetMaxChi2PerClusterITS(1E10);
234 AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
235 esdTrackCutsH2->SetMinNCrossedRowsTPC(120);
236 esdTrackCutsH2->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
237 esdTrackCutsH2->SetMaxChi2PerClusterITS(36);
238 esdTrackCutsH2->SetMaxFractionSharedTPCClusters(0.4);
239 esdTrackCutsH2->SetMaxChi2TPCConstrainedGlobal(36);
241 esdTrackCutsH2->SetEtaRange(-0.9,0.9);
242 esdTrackCutsH2->SetPtRange(0.15, 1e10);
245 AliESDtrackCuts* esdTrackCutsGCOnly = jetCuts1006->Clone(
"JetCuts10041006");
246 esdTrackCutsGCOnly->SetRequireITSRefit(kFALSE);
249 AliESDtrackCuts* esdTrackCutsTPCCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
250 esdTrackCutsTPCCOnly->SetMinNClustersTPC(70);
253 AliAnalysisFilter* trackFilter =
new AliAnalysisFilter(
"trackFilter");
255 trackFilter->AddCuts(esdTrackCutsL);
257 trackFilter->AddCuts(esdTrackCutsITSsa);
259 trackFilter->AddCuts(itsStrong);
260 itsStrong->SetFilterMask(1);
262 trackFilter->AddCuts(electronID);
263 electronID->SetFilterMask(4);
265 trackFilter->AddCuts(esdTrackCutsHG0);
267 trackFilter->AddCuts(esdTrackCutsHG1);
269 trackFilter->AddCuts(esdTrackCutsHG2);
271 trackFilter->AddCuts(esdTrackCutsTPCCOnly);
274 trackFilter->AddCuts(esdTrackCutsGCOnly);
276 AliESDtrackCuts* esdTrackCutsHG1_tmp =
new AliESDtrackCuts(*esdTrackCutsHG1);
277 trackFilter->AddCuts(esdTrackCutsHG1_tmp);
279 trackFilter->AddCuts(esdTrackCutsH2);
283 esdfilter->SetGlobalConstrainedFilterMask(1<<8|1<<9);
284 esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<4));
285 esdfilter->SetWriteHybridGlobalConstrainedOnly(kTRUE);
288 esdfilter->SetTrackFilter(trackFilter);
294 Printf(
"%s%d: Creating Track Cuts LHC11h",(
char*)__FILE__,__LINE__);
297 AliESDtrackCuts* esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
300 AliESDtrackCuts* esdTrackCutsITSsa =
new AliESDtrackCuts(
"ITS stand-alone Track Cuts",
"ESD Track Cuts");
301 esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE);
304 AliESDtrackCuts *itsStrong =
new AliESDtrackCuts(
"ITSorSPD",
"pixel requirement for ITS");
305 itsStrong->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
309 AliESDpidCuts *electronID =
new AliESDpidCuts(
"Electrons",
"Electron PID cuts");
310 electronID->SetTPCnSigmaCut(AliPID::kElectron, 3.);
313 AliESDtrackCuts* esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
314 esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
315 esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
316 esdTrackCutsH->SetDCAToVertex2D(kTRUE);
319 AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
323 AliESDtrackCuts* esdTrackCutsH3 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
324 esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
325 esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSDD, AliESDtrackCuts::kFirst);
329 AliESDtrackCuts* esdTrackCutsTPCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
335 AliESDtrackCuts* esdTrackCutsHTG = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
336 esdTrackCutsHTG->SetName(
"Global Hybrid tracks, loose DCA");
337 esdTrackCutsHTG->SetMaxDCAToVertexXY(2.4);
338 esdTrackCutsHTG->SetMaxDCAToVertexZ(3.2);
339 esdTrackCutsHTG->SetDCAToVertex2D(kTRUE);
340 esdTrackCutsHTG->SetMaxChi2TPCConstrainedGlobal(36);
344 AliESDtrackCuts* esdTrackCutsHTGC =
new AliESDtrackCuts(*esdTrackCutsHTG);
345 esdTrackCutsHTGC->SetName(
"Global Constraint Hybrid tracks, loose DCA no it requirement");
346 esdTrackCutsHTGC->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff);
347 esdTrackCutsHTGC->SetRequireITSRefit(kFALSE);
350 AliESDtrackCuts* esdTrackCutsH2Cluster = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE, 0);
353 AliAnalysisFilter* trackFilter =
new AliAnalysisFilter(
"trackFilter");
355 trackFilter->AddCuts(esdTrackCutsL);
357 trackFilter->AddCuts(esdTrackCutsITSsa);
359 trackFilter->AddCuts(itsStrong);
360 itsStrong->SetFilterMask(1);
362 trackFilter->AddCuts(electronID);
363 electronID->SetFilterMask(4);
365 trackFilter->AddCuts(esdTrackCutsH);
367 trackFilter->AddCuts(esdTrackCutsH2);
369 trackFilter->AddCuts(esdTrackCutsH3);
371 trackFilter->AddCuts(esdTrackCutsTPCOnly);
374 trackFilter->AddCuts(esdTrackCutsHTG);
375 esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<8));
377 trackFilter->AddCuts(esdTrackCutsHTGC);
378 esdfilter->SetGlobalConstrainedFilterMask(1<<9);
379 esdfilter->SetWriteHybridGlobalConstrainedOnly(kTRUE);
381 trackFilter->AddCuts(esdTrackCutsH2Cluster);
382 esdfilter->SetTrackFilter(trackFilter);
Bool_t AddTrackCutsLHC10h(AliAnalysisTaskESDfilter *esdFilter)
void SetNcellsCut(Int_t cut)
AliAnalysisTaskESDfilter * AddTaskESDFilterEMCALEventSelect(Float_t energyCut=10, Int_t ncellsCut=2, Int_t runNumber=170000, Bool_t useKineFilter=kTRUE, Int_t tofTimeZeroType=AliESDpid::kTOF_T0, Bool_t enableTPCOnlyAODTracks=kFALSE, Bool_t disableCascades=kFALSE, Bool_t disableKinks=kFALSE, Int_t runFlag=1100)
Bool_t enableTPCOnlyAODTracksLocalFlag
void SetEnergyCut(Float_t cut)
Bool_t AddTrackCutsLHC11h(AliAnalysisTaskESDfilter *esdFilter)
AliEMCALRecoUtils * GetRecoUtils()
Filter ESDs events into AODs with some significant calorimeter signal.