AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE,
Bool_t writeMuonAOD=kFALSE,
Bool_t writeDimuonAOD=kFALSE,
- Bool_t usePhysicsSelection=kFALSE)
+ Bool_t usePhysicsSelection=kFALSE,
+ Bool_t useCentralityTask=kFALSE,
+ Int_t tofTimeZeroType=AliESDpid::kTOF_T0,
+ Bool_t enableTPCOnlyAODTracks=kFALSE)
{
// Creates a filter task and adds it to the analysis manager.
//===========================================================================
// Barrel tracks filter
AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
+ esdfilter->SetTimeZeroType(tofTimeZeroType);
+ esdfilter->DisableCascades();
+ esdfilter->DisableKinks();
+
mgr->AddTask(esdfilter);
+
// Muons
- AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
+ Bool_t onlyMuon=kTRUE;
+ Bool_t keepAllEvents=kTRUE;
+ Int_t mcMode=(useKineFilter ? 2 : 0); // use 1 instead of 2 to get all MC information instead of just ancestors of mu tracks
+ AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter",onlyMuon,keepAllEvents,mcMode);
mgr->AddTask(esdmuonfilter);
if(usePhysicsSelection){
esdfilter->SelectCollisionCandidates(AliVEvent::kAny);
mgr->AddTask(kinefilter);
}
+ AliAnalysisTaskAODCentralityMaker* ctask = 0;
+
+ if (useCentralityTask) {
+ ctask = new AliAnalysisTaskAODCentralityMaker("AODCentralityMaker");
+ ctask->SetDeltaAODFileName("AliAODCentrality.root");
+ mgr->AddTask(ctask);
+ }
+
// Cuts on primary tracks
AliESDtrackCuts* esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
AliESDpidCuts *electronID = new AliESDpidCuts("Electrons", "Electron PID cuts");
electronID->SetTPCnSigmaCut(AliPID::kElectron, 3.);
- // tighter cuts on primary particles for high pT tracks
- // needed as input for jetfinder
- AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("Standard Track Cuts + ITSRefit", "High pT ESD Track Cuts");
- esdTrackCutsH->SetMinNClustersTPC(50);
- esdTrackCutsH->SetMaxChi2PerClusterTPC(3.5);
- esdTrackCutsH->SetRequireTPCRefit(kTRUE);
+ // standard cuts with very loose DCA
+ AliESDtrackCuts* esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE);
esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
esdTrackCutsH->SetDCAToVertex2D(kTRUE);
- esdTrackCutsH->SetRequireSigmaToVertex(kFALSE);
- esdTrackCutsH->SetAcceptKinkDaughters(kFALSE);
- esdTrackCutsH->SetRequireITSRefit(kTRUE); // additional cut
+ // standard cuts with tight DCA cut
+ AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
+
+ // standard cuts with tight DCA but with requiring the first SDD cluster instead of an SPD cluster
+ // tracks selected by this cut are exclusive to those selected by the previous cut
+ AliESDtrackCuts* esdTrackCutsH3 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
+ esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
+ esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSDD, AliESDtrackCuts::kFirst);
+ // TPC only tracks: Optionally enable the writing of TPConly information
+ // constrained to SPD vertex in the filter below
+ AliESDtrackCuts* esdTrackCutsTPCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+ esdTrackCutsTPCOnly->SetMinNClustersTPC(70);
// Compose the filter
AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
electronID->SetFilterMask(4); // AND with Pixel Cuts
// 16
trackFilter->AddCuts(esdTrackCutsH);
-
+ // 32
+ trackFilter->AddCuts(esdTrackCutsH2);
+ // 64
+ trackFilter->AddCuts(esdTrackCutsH3);
+ // 128 , 1 << 7
+ trackFilter->AddCuts(esdTrackCutsTPCOnly);
+ if(enableTPCOnlyAODTracks)esdfilter->SetTPCOnlyFilterMask(128);
+
// Filter with cuts on V0s
AliESDv0Cuts* esdV0Cuts = new AliESDv0Cuts("Standard V0 Cuts pp", "ESD V0 Cuts");
esdV0Cuts->SetMinRadius(0.2);
AliAnalysisManager::kOutputContainer,"pyxsec_hists.root");
mgr->ConnectOutput (kinefilter, 1,coutputEx);
}
+ if (useCentralityTask) {
+ mgr->ConnectInput (ctask, 0, mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(ctask, 0, mgr->GetCommonOutputContainer());
+ }
return esdfilter;
}