1 AliAnalysisTaskFilteredTree* AddTaskFilteredTree(TString outputFile="")
3 gSystem->Load("libANALYSIS");
4 gSystem->Load("libANALYSISalice");
5 gSystem->Load("libTENDER");
6 gSystem->Load("libCORRFW");
7 gSystem->Load("libPWGUDbase");
8 gSystem->Load("libTPCcalib");
9 gSystem->Load("libPWGPP");
10 gSystem->Load("libPWGLFspectra");
15 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
18 Error("AddTaskFilteredTree", "No analysis manager found.");
22 // Switch off all AliInfo (too much output!!!)
23 AliLog::SetGlobalLogLevel(AliLog::kError);
24 mgr->SetDebugLevel(0);
29 // Create physics trigger selection class
31 //AliPhysicsSelection *physTrigSel = new AliPhysicsSelection();
36 Float_t zvWindow = 30. ;
38 AliFilteredTreeEventCuts *evtCuts = new AliFilteredTreeEventCuts("AliFilteredTreeEventCuts","Event cuts");
39 evtCuts->SetZvRange(-zvWindow,zvWindow);
40 evtCuts->SetMeanXYZv(0.0,0.0,0.0);
41 evtCuts->SetSigmaMeanXYZv(1.0,1.0,10.0);
42 evtCuts->SetTriggerRequired(kFALSE);
43 //evtCuts->SetTriggerRequired(kTRUE);
46 // Create geom. acceptance cuts
48 Float_t etaWindow = 1.0 ;
49 Float_t ptMin = 0.15 ;
51 AliFilteredTreeAcceptanceCuts *accCuts = new AliFilteredTreeAcceptanceCuts("AliFilteredTreeAcceptanceCuts","Geom. acceptance cuts");
52 accCuts->SetEtaRange(-etaWindow,etaWindow);
53 accCuts->SetPtRange(ptMin,1.e10);
54 accCuts->SetMaxDCAr(3.0);
55 accCuts->SetMaxDCAz(30.0);
58 // Create standard esd track cuts
61 AliESDtrackCuts* esdTrackCuts = CreateCuts();
63 printf("ERROR: esdTrackCuts could not be created\n");
66 esdTrackCuts->SetHistogramsOn(kTRUE);
69 Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
74 AliAnalysisTaskFilteredTree *task = new AliAnalysisTaskFilteredTree("AliAnalysisTaskFilteredTree");
75 task->SetUseMCInfo(hasMC);
76 //task->SetLowPtTrackDownscaligF(1.e4);
77 //task->SetLowPtV0DownscaligF(1.e2);
78 task->SetLowPtTrackDownscaligF(1.e7);
79 task->SetLowPtV0DownscaligF(1.e4);
80 task->SetProcessAll(kTRUE);
81 task->SetProcessCosmics(kTRUE);
82 //task->SetProcessAll(kFALSE);
85 //task->SelectCollisionCandidates(AliVEvent::kMB);
88 // set analysis options from the Helper here !!!
90 // AlidNdPtHelper::OutputObject outputObject = AlidNdPtHelper::kCutAnalysisPbPb;
91 // AlidNdPtHelper::ParticleMode particleMode = AlidNdPtHelper::kAllPart ;
92 //AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPCITS;
94 task->SetUseMCInfo(hasMC);
95 task->SetEventCuts(evtCuts);
96 task->SetAcceptanceCuts(accCuts);
97 task->SetTrackCuts(esdTrackCuts);
98 task->SetAnalysisMode(AliAnalysisTaskFilteredTree::kTPCITSAnalysisMode);
99 task->SetCentralityEstimator("V0M");
104 // Create containers for input
105 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
106 mgr->ConnectInput(task, 0, cinput);
108 if (outputFile.IsNull())
109 outputFile=Form("%s", AliAnalysisManager::GetCommonFileName());
111 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("filtered1", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
112 mgr->ConnectOutput(task, 1, coutput1);
113 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("filtered2", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
114 mgr->ConnectOutput(task, 2, coutput2);
115 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("filtered3", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
116 mgr->ConnectOutput(task, 3, coutput3);
117 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("filtered4", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
118 mgr->ConnectOutput(task, 4, coutput4);
119 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("filtered5", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
120 mgr->ConnectOutput(task, 5, coutput5);
121 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("filtered6", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
122 mgr->ConnectOutput(task, 6, coutput6);
127 AliESDtrackCuts* CreateCuts(Bool_t fieldOn = kTRUE, Bool_t hists = kTRUE)
129 AliESDtrackCuts* esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts");
130 if(!esdTrackCuts) return 0;
133 esdTrackCuts->DefineHistograms(1);
135 Double_t cov1, cov2, cov3, cov4, cov5;
137 Double_t maxDCAtoVertex, maxDCAtoVertexXY, maxDCAtoVertexZ;
138 Double_t minNClustersTPC;
139 Double_t maxChi2PerClusterTPC;
140 Double_t minPt, maxPt;
145 esdTrackCuts->SetRequireTPCRefit(kTRUE);
146 esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
150 //esdTrackCuts->SetRequireITSRefit(kTRUE);
151 //esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
154 TString tag = "TPC+ITS refit and KinkRejection required - for cut studies";
156 // cuts for data without field
160 tag += " without field";
163 Printf("Created track cuts for: %s", tag.Data());