+
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)
{
// Creates a filter task and adds it to the analysis manager.
//===========================================================================
// Barrel tracks filter
AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
+
+ // Make the AOD a little bit lighter and filtering faster
+
+ esdfilter->DisableCascades();
+ // esdfilter->DisableV0s();
+ esdfilter->DisableKinks();
+ // esdfilter->DisableTracks();
+ esdfilter->DisablePmdClusters();
+ // esdfilter->DisableCaloClusters();
+ // esdfilter->DisableCells();
+ esdfilter->DisableTracklets();
+ esdfilter->SetWriteHybridGlobalConstrainedOnly(kTRUE);
+
+ AliAnalysisTaskAODCentralityMaker* ctask = 0;
+ if (useCentralityTask) {
+ ctask = new AliAnalysisTaskAODCentralityMaker("AODCentralityMaker");
+ ctask->SetDeltaAODFileName("AliAODCentrality.root");
+ mgr->AddTask(ctask);
+ }
+
+
mgr->AddTask(esdfilter);
// Muons
// AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
// take the standard cuts, which include already
// ITSrefit and use only primaries...
- // loose DCA cuts
- AliESDtrackCuts* esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE);
- esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
- esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
- esdTrackCutsH->SetDCAToVertex2D(kTRUE);
+ // ITS cuts for new jet analysis
+ gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/CreateTrackCutsPWG4.C");
+ AliESDtrackCuts* esdTrackCutsHG0 = CreateTrackCutsPWG4(10001005);
- // standard cuts with tight DCA cut
- AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
+ // throw out tracks with too low number of clusters in
+ // the first pass (be consistent with TPC only tracks)
+ // N.B. the number off crossed rows still acts on the tracks after
+ // all iterations if we require tpc standalone, number of clusters
+ // and chi2 TPC cuts act on track after the first iteration
+ // esdTrackCutsH0->SetRequireTPCStandAlone(kTRUE);
+ // esdTrackCutsH0->SetMinNClustersTPC(80); // <--- first pass
- // 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);
-
+
+ // the complement to the one with SPD requirement
+ AliESDtrackCuts* esdTrackCutsHG1 = CreateTrackCutsPWG4(10011005);
+
+ // the tracks that must not be taken pass this cut and
+ // non HGC1 and HG
+ AliESDtrackCuts* esdTrackCutsHG2 = CreateTrackCutsPWG4(10021005);
+
+
+
+
+ // standard cuts also used in R_AA analysis
+ gROOT->LoadMacro("$ALICE_ROOT/PWG0/dNdPt/macros/CreatedNdPtTrackCuts.C");
+ AliESDtrackCuts* esdTrackCutsH2 = CreatedNdPtTrackCuts(200);
+ esdTrackCutsH2->SetMaxChi2PerClusterITS(36.);
+ esdTrackCutsH2->SetPtRange(0.15,1E10);
+
+ AliESDtrackCuts* esdTrackCutsGCOnly = CreateTrackCutsPWG4(10041005);
+
+ // TPC only tracks
+ AliESDtrackCuts* esdTrackCutsTPCCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+ esdTrackCutsTPCCOnly->SetMinNClustersTPC(70);
- // these are needed for older MC
- /*
- AliESDtrackCuts* esdTrackCutsH1 = new AliESDtrackCuts("OldStandardTrackCuts+ITSRefit", "High pT ESD Track Cuts");
- esdTrackCutsH1->SetMinNClustersTPC(50);
- esdTrackCutsH1->SetMaxChi2PerClusterTPC(3.5);
- esdTrackCutsH1->SetRequireTPCRefit(kTRUE);
- esdTrackCutsH1->SetMaxDCAToVertexXY(2.4);
- esdTrackCutsH1->SetMaxDCAToVertexZ(3.2);
- esdTrackCutsH1->SetDCAToVertex2D(kTRUE);
- esdTrackCutsH1->SetRequireSigmaToVertex(kFALSE);
- esdTrackCutsH1->SetAcceptKinkDaughters(kFALSE);
- esdTrackCutsH1->SetRequireITSRefit(kTRUE); // additional cut
- */
- AliESDtrackCuts* esdTrackCutsH1 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
- esdTrackCutsH1->SetName("StandardFromAliESDTrackCutsMaxRelPt");
- esdTrackCutsH1->SetMaxRel1PtUncertainty(0.4); // new
// Compose the filter
AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
trackFilter->AddCuts(electronID);
electronID->SetFilterMask(4); // AND with Pixel Cuts
// 16 1<<4
- trackFilter->AddCuts(esdTrackCutsH);
+ trackFilter->AddCuts(esdTrackCutsHG0);
// 32 1<<5
- trackFilter->AddCuts(esdTrackCutsH2);
+ trackFilter->AddCuts(esdTrackCutsHG1);
// 64 1<<6
- trackFilter->AddCuts(esdTrackCutsH3);
+ trackFilter->AddCuts(esdTrackCutsHG2);
// 128 1<<7
- trackFilter->AddCuts(esdTrackCutsH1);
-
+ trackFilter->AddCuts(esdTrackCutsHG0); // add once more for tpc only tracks
+ // 256 1<<8
+ trackFilter->AddCuts(esdTrackCutsGCOnly);
+ // 512 1<<9
+ trackFilter->AddCuts(esdTrackCutsHG1); // add once more for tpc only tracks
+ // 1024 1<<10
+ trackFilter->AddCuts(esdTrackCutsH2); // add r_aa cuts
+ // 2048 1<<11
+ trackFilter->AddCuts(esdTrackCutsTPCCOnly); // add QM TPC only track cuts
+
+
+ esdfilter->SetGlobalConstrainedFilterMask(1<<8|1<<9); // these tracks are written out as global constrained tracks
+ esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<4)); // these normal global tracks will be marked as hybrid
+
+ esdfilter->SetTPCConstrainedFilterMask(1<<11); // these tracks are written out as global constrained tracks
+
// Filter with cuts on V0s
AliESDv0Cuts* esdV0Cuts = new AliESDv0Cuts("Standard V0 Cuts pp", "ESD V0 Cuts");
esdV0Cuts->SetMinRadius(0.2);
esdV0Cuts->SetMaxDcaV0Daughters(1.5);
esdV0Cuts->SetMinCosinePointingAngle(0.99);
AliAnalysisFilter* v0Filter = new AliAnalysisFilter("v0Filter");
- // v0Filter->AddCuts(esdV0Cuts);
+ v0Filter->AddCuts(esdV0Cuts);
esdfilter->SetTrackFilter(trackFilter);
- // esdfilter->SetV0Filter(v0Filter);
+ esdfilter->SetV0Filter(v0Filter);
// Enable writing of Muon AODs
// esdmuonfilter->SetWriteMuonAOD(writeMuonAOD);
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;
}