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();
74 AliOADBContainer *contBC=
new AliOADBContainer(
"");
75 contBC->InitFromFile((
char*)fileName.Data(),
"AliEMCALBadChannels");
81 reco->SwitchOnBadChannelsRemoval();
82 printf(
"*** EMCAL RecoUtils : REMOVE bad cells \n");
84 for (
Int_t i=0; i<10; ++i) {
85 TH2I *hbm = reco->GetEMCALChannelStatusMap(i);
88 hbm=(TH2I*)arrayBCpass->FindObject(Form(
"EMCALBadChannelMap_Mod%d",i));
91 AliError(Form(
"Can not get EMCALBadChannelMap_Mod%d",i));
96 reco->SetEMCALChannelStatusMap(i,hbm);
98 }
else printf(
"AliEMCALRecoUtils ---Do NOT remove bad channels 1\n");
99 }
else printf(
"AliEMCALRecoUtils ---Do NOT remove bad channels 2\n");
103 esdfilter->SetTimeZeroType(tofTimeZeroType);
104 if (disableCascades) esdfilter->DisableCascades();
105 if (disableKinks) esdfilter->DisableKinks();
107 mgr->AddTask(esdfilter);
114 AliAnalysisTaskMCParticleFilter *kinefilter = 0;
116 kinefilter =
new AliAnalysisTaskMCParticleFilter(
"Particle Kine Filter");
117 mgr->AddTask(kinefilter);
121 if((runFlag/100)==10){
130 AliESDv0Cuts* esdV0Cuts =
new AliESDv0Cuts(
"Standard V0 Cuts pp",
"ESD V0 Cuts");
131 esdV0Cuts->SetMinRadius(0.2);
132 esdV0Cuts->SetMaxRadius(200);
133 esdV0Cuts->SetMinDcaPosToVertex(0.05);
134 esdV0Cuts->SetMinDcaNegToVertex(0.05);
135 esdV0Cuts->SetMaxDcaV0Daughters(1.5);
136 esdV0Cuts->SetMinCosinePointingAngle(0.99);
137 AliAnalysisFilter* v0Filter =
new AliAnalysisFilter(
"v0Filter");
138 v0Filter->AddCuts(esdV0Cuts);
140 esdfilter->SetV0Filter(v0Filter);
145 mgr->ConnectInput (esdfilter, 0, mgr->GetCommonInputContainer());
146 mgr->ConnectOutput (esdfilter, 0, mgr->GetCommonOutputContainer());
148 mgr->ConnectInput (kinefilter, 0, mgr->GetCommonInputContainer());
149 mgr->ConnectOutput (kinefilter, 0, mgr->GetCommonOutputContainer());
150 AliAnalysisDataContainer *coutputEx = mgr->CreateContainer(
"cFilterList", TList::Class(),
151 AliAnalysisManager::kOutputContainer,
"pyxsec_hists.root");
152 mgr->ConnectOutput (kinefilter, 1,coutputEx);
159 Printf(
"%s%d: Creating Track Cuts for LH10h",(
char*)__FILE__,__LINE__);
162 AliESDtrackCuts* esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
165 AliESDtrackCuts* esdTrackCutsITSsa =
new AliESDtrackCuts(
"ITS stand-alone Track Cuts",
"ESD Track Cuts");
166 esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE);
169 AliESDtrackCuts *itsStrong =
new AliESDtrackCuts(
"ITSorSPD",
"pixel requirement for ITS");
170 itsStrong->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
174 AliESDpidCuts *electronID =
new AliESDpidCuts(
"Electrons",
"Electron PID cuts");
175 electronID->SetTPCnSigmaCut(AliPID::kElectron, 3.);
185 AliESDtrackCuts *jetCuts1006 =
new AliESDtrackCuts(
"AliESDtrackCuts");
187 TFormula *f1NClustersTPCLinearPtDep =
new TFormula(
"f1NClustersTPCLinearPtDep",
"70.+30./20.*x");
188 jetCuts1006->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep,20.);
189 jetCuts1006->SetMinNClustersTPC(70);
190 jetCuts1006->SetMaxChi2PerClusterTPC(4);
191 jetCuts1006->SetRequireTPCStandAlone(kTRUE);
192 jetCuts1006->SetAcceptKinkDaughters(kFALSE);
193 jetCuts1006->SetRequireTPCRefit(kTRUE);
194 jetCuts1006->SetMaxFractionSharedTPCClusters(0.4);
196 jetCuts1006->SetRequireITSRefit(kTRUE);
198 jetCuts1006->SetMaxDCAToVertexXY(2.4);
199 jetCuts1006->SetMaxDCAToVertexZ(3.2);
200 jetCuts1006->SetDCAToVertex2D(kTRUE);
202 jetCuts1006->SetMaxChi2PerClusterITS(36);
203 jetCuts1006->SetMaxChi2TPCConstrainedGlobal(36);
205 jetCuts1006->SetRequireSigmaToVertex(kFALSE);
207 jetCuts1006->SetEtaRange(-0.9,0.9);
208 jetCuts1006->SetPtRange(0.15, 1E+15.);
210 AliESDtrackCuts* esdTrackCutsHG0 = jetCuts1006->Clone(
"JetCuts10001006");
211 esdTrackCutsHG0->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
223 AliESDtrackCuts* esdTrackCutsHG1 = jetCuts1006->Clone(
"JetCuts10011006");
224 esdTrackCutsHG1->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
229 AliESDtrackCuts* esdTrackCutsHG2 = jetCuts1006->Clone(
"JetCuts10021006");
230 esdTrackCutsHG2->SetMaxChi2PerClusterITS(1E10);
235 AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
236 esdTrackCutsH2->SetMinNCrossedRowsTPC(120);
237 esdTrackCutsH2->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
238 esdTrackCutsH2->SetMaxChi2PerClusterITS(36);
239 esdTrackCutsH2->SetMaxFractionSharedTPCClusters(0.4);
240 esdTrackCutsH2->SetMaxChi2TPCConstrainedGlobal(36);
242 esdTrackCutsH2->SetEtaRange(-0.9,0.9);
243 esdTrackCutsH2->SetPtRange(0.15, 1e10);
246 AliESDtrackCuts* esdTrackCutsGCOnly = jetCuts1006->Clone(
"JetCuts10041006");
247 esdTrackCutsGCOnly->SetRequireITSRefit(kFALSE);
250 AliESDtrackCuts* esdTrackCutsTPCCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
251 esdTrackCutsTPCCOnly->SetMinNClustersTPC(70);
254 AliAnalysisFilter* trackFilter =
new AliAnalysisFilter(
"trackFilter");
256 trackFilter->AddCuts(esdTrackCutsL);
258 trackFilter->AddCuts(esdTrackCutsITSsa);
260 trackFilter->AddCuts(itsStrong);
261 itsStrong->SetFilterMask(1);
263 trackFilter->AddCuts(electronID);
264 electronID->SetFilterMask(4);
266 trackFilter->AddCuts(esdTrackCutsHG0);
268 trackFilter->AddCuts(esdTrackCutsHG1);
270 trackFilter->AddCuts(esdTrackCutsHG2);
272 trackFilter->AddCuts(esdTrackCutsTPCCOnly);
275 trackFilter->AddCuts(esdTrackCutsGCOnly);
277 AliESDtrackCuts* esdTrackCutsHG1_tmp =
new AliESDtrackCuts(*esdTrackCutsHG1);
278 trackFilter->AddCuts(esdTrackCutsHG1_tmp);
280 trackFilter->AddCuts(esdTrackCutsH2);
284 esdfilter->SetGlobalConstrainedFilterMask(1<<8|1<<9);
285 esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<4));
286 esdfilter->SetWriteHybridGlobalConstrainedOnly(kTRUE);
289 esdfilter->SetTrackFilter(trackFilter);
295 Printf(
"%s%d: Creating Track Cuts LHC11h",(
char*)__FILE__,__LINE__);
298 AliESDtrackCuts* esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
301 AliESDtrackCuts* esdTrackCutsITSsa =
new AliESDtrackCuts(
"ITS stand-alone Track Cuts",
"ESD Track Cuts");
302 esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE);
305 AliESDtrackCuts *itsStrong =
new AliESDtrackCuts(
"ITSorSPD",
"pixel requirement for ITS");
306 itsStrong->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
310 AliESDpidCuts *electronID =
new AliESDpidCuts(
"Electrons",
"Electron PID cuts");
311 electronID->SetTPCnSigmaCut(AliPID::kElectron, 3.);
314 AliESDtrackCuts* esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
315 esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
316 esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
317 esdTrackCutsH->SetDCAToVertex2D(kTRUE);
320 AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
324 AliESDtrackCuts* esdTrackCutsH3 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
325 esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
326 esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSDD, AliESDtrackCuts::kFirst);
330 AliESDtrackCuts* esdTrackCutsTPCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
336 AliESDtrackCuts* esdTrackCutsHTG = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
337 esdTrackCutsHTG->SetName(
"Global Hybrid tracks, loose DCA");
338 esdTrackCutsHTG->SetMaxDCAToVertexXY(2.4);
339 esdTrackCutsHTG->SetMaxDCAToVertexZ(3.2);
340 esdTrackCutsHTG->SetDCAToVertex2D(kTRUE);
341 esdTrackCutsHTG->SetMaxChi2TPCConstrainedGlobal(36);
345 AliESDtrackCuts* esdTrackCutsHTGC =
new AliESDtrackCuts(*esdTrackCutsHTG);
346 esdTrackCutsHTGC->SetName(
"Global Constraint Hybrid tracks, loose DCA no it requirement");
347 esdTrackCutsHTGC->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff);
348 esdTrackCutsHTGC->SetRequireITSRefit(kFALSE);
351 AliESDtrackCuts* esdTrackCutsH2Cluster = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE, 0);
354 AliAnalysisFilter* trackFilter =
new AliAnalysisFilter(
"trackFilter");
356 trackFilter->AddCuts(esdTrackCutsL);
358 trackFilter->AddCuts(esdTrackCutsITSsa);
360 trackFilter->AddCuts(itsStrong);
361 itsStrong->SetFilterMask(1);
363 trackFilter->AddCuts(electronID);
364 electronID->SetFilterMask(4);
366 trackFilter->AddCuts(esdTrackCutsH);
368 trackFilter->AddCuts(esdTrackCutsH2);
370 trackFilter->AddCuts(esdTrackCutsH3);
372 trackFilter->AddCuts(esdTrackCutsTPCOnly);
375 trackFilter->AddCuts(esdTrackCutsHTG);
376 esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<8));
378 trackFilter->AddCuts(esdTrackCutsHTGC);
379 esdfilter->SetGlobalConstrainedFilterMask(1<<9);
380 esdfilter->SetWriteHybridGlobalConstrainedOnly(kTRUE);
382 trackFilter->AddCuts(esdTrackCutsH2Cluster);
383 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.