]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/macros/AddTaskFilteredTree.C
comply with the framework conventions for running on the lego train
[u/mrichter/AliRoot.git] / PWGPP / macros / AddTaskFilteredTree.C
1 AliAnalysisTaskFilteredTree* AddTaskFilteredTree(TString outputFile="")
2 {
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");
11
12
13   gRandom->SetSeed(0);
14
15   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
16
17   if (!mgr) {
18     Error("AddTaskFilteredTree", "No analysis manager found.");
19     return 0;
20   }
21
22   // Switch off all AliInfo (too much output!!!)
23   AliLog::SetGlobalLogLevel(AliLog::kError);
24   mgr->SetDebugLevel(0);
25
26   
27
28   //
29   // Create physics trigger selection class
30   //
31   //AliPhysicsSelection *physTrigSel =  new AliPhysicsSelection();
32
33   //
34   // Create event cuts
35   //
36   Float_t zvWindow = 30. ;
37
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);
44
45   //
46   // Create geom. acceptance cuts
47   //
48   Float_t etaWindow = 1.0 ;
49   Float_t ptMin = 0.15 ;
50
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);
56
57   //
58   // Create standard esd track cuts
59   //
60
61   AliESDtrackCuts* esdTrackCuts = CreateCuts();
62   if (!esdTrackCuts) {
63     printf("ERROR: esdTrackCuts could not be created\n");
64     return;
65   } else {
66     esdTrackCuts->SetHistogramsOn(kTRUE);
67   }
68
69   Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
70
71   //
72   // Create task
73   //
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);
83
84   // trigger
85   //task->SelectCollisionCandidates(AliVEvent::kMB); 
86
87   //
88   // set analysis options from the Helper here !!!
89   //
90   // AlidNdPtHelper::OutputObject outputObject = AlidNdPtHelper::kCutAnalysisPbPb;
91   // AlidNdPtHelper::ParticleMode particleMode = AlidNdPtHelper::kAllPart ;
92   //AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPCITS;
93
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");
100     
101   // Add task
102   mgr->AddTask(task);
103
104   // Create containers for input
105   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
106   mgr->ConnectInput(task, 0, cinput);
107
108   if (outputFile.IsNull())
109     outputFile=Form("%s", AliAnalysisManager::GetCommonFileName());
110
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);
123
124   return task;
125 }
126
127 AliESDtrackCuts* CreateCuts(Bool_t fieldOn = kTRUE, Bool_t hists = kTRUE)
128 {
129   AliESDtrackCuts* esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts");
130   if(!esdTrackCuts) return 0;
131
132   if (hists)
133     esdTrackCuts->DefineHistograms(1);
134
135   Double_t cov1, cov2, cov3, cov4, cov5;
136   Double_t nSigma;
137   Double_t maxDCAtoVertex, maxDCAtoVertexXY, maxDCAtoVertexZ;
138   Double_t minNClustersTPC;
139   Double_t maxChi2PerClusterTPC;
140   Double_t minPt, maxPt;
141
142   //
143   // TPC
144   //
145   esdTrackCuts->SetRequireTPCRefit(kTRUE);
146   esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
147   //
148   // ITS
149   //
150   //esdTrackCuts->SetRequireITSRefit(kTRUE);
151   //esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
152   //
153
154   TString tag = "TPC+ITS refit and KinkRejection required - for cut studies";
155
156   // cuts for data without field
157   if (!fieldOn)
158   {
159     cov5 = 1e10;
160     tag += " without field";
161   }
162
163   Printf("Created track cuts for: %s", tag.Data());
164
165   return esdTrackCuts;
166 }