1 AliAnalysisTask* AddTask(Bool_t AnalysisMC, const Char_t* taskname, Int_t typerun, UInt_t kTriggerInt[], Float_t minc[], Float_t maxc[] )
3 // Creates a pid task and adds it to the analysis manager
5 // Get the pointer to the existing analysis manager via the static
7 //=========================================================================
8 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
10 Error("AddTaskHighPtDeDx", "No analysis manager to connect to.");
14 // Check the analysis type using the event handlers connected to the
15 // analysis manager The availability of MC handler can also be
17 // =========================================================================
18 if (!mgr->GetInputEventHandler()) {
19 Error("AddTaskHighPtDeDx", "This task requires an input event handler");
24 // Add track filters, with Golden Cuts
26 AliAnalysisFilter* trackFilterGolden = new AliAnalysisFilter("trackFilter");
27 AliESDtrackCuts* esdTrackCutsGolden =
28 AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
29 trackFilterGolden->AddCuts(esdTrackCutsGolden);
32 //old cuts without golden cut
33 AliAnalysisFilter* trackFilter0 = new AliAnalysisFilter("trackFilter");
35 Bool_t selPrimaries=kTRUE;
36 AliESDtrackCuts* esdTrackCutsL0 = new AliESDtrackCuts;
38 if(clusterCut == 0) esdTrackCutsL0->SetMinNClustersTPC(70);
39 else if (clusterCut == 1) {
40 esdTrackCutsL0->SetMinNCrossedRowsTPC(70);
41 esdTrackCutsL0->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
44 AliWarningClass(Form("Wrong value of the clusterCut parameter (%d), using cut on Nclusters",clusterCut));
45 esdTrackCutsL0->SetMinNClustersTPC(70);
47 esdTrackCutsL0->SetMaxChi2PerClusterTPC(4);
48 esdTrackCutsL0->SetAcceptKinkDaughters(kFALSE);
49 esdTrackCutsL0->SetRequireTPCRefit(kTRUE);
51 esdTrackCutsL0->SetRequireITSRefit(kTRUE);
52 esdTrackCutsL0->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
53 AliESDtrackCuts::kAny);
55 // 7*(0.0026+0.0050/pt^1.01)
56 esdTrackCutsL0->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
58 esdTrackCutsL0->SetMaxDCAToVertexZ(2);
59 esdTrackCutsL0->SetDCAToVertex2D(kFALSE);
60 esdTrackCutsL0->SetRequireSigmaToVertex(kFALSE);
61 esdTrackCutsL0->SetMaxChi2PerClusterITS(1e10);
62 esdTrackCutsL0->SetMaxChi2TPCConstrainedGlobal(1e10);
65 trackFilter0->AddCuts(esdTrackCutsL0);
69 AliAnalysisFilter* trackFilterTPC = new AliAnalysisFilter("trackFilterTPC");
70 AliESDtrackCuts* esdTrackCutsTPC =
71 AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
72 trackFilterTPC->AddCuts(esdTrackCutsTPC);
75 // Create the task and configure it
76 //========================================================================
77 if(typerun==2){//heavy ion analysis
79 AliAnalysisTaskHighPtDeDxV0* taskHighPtDeDxV0[6];
80 for( Int_t i=0; i<6; ++i ){
81 taskHighPtDeDxV0[i]=0;
82 Char_t TaskName[256]={0};
83 sprintf(TaskName,"%s_%1.0f_%1.0f",taskname,minc[i],maxc[i]);
85 taskHighPtDeDxV0[i] = new AliAnalysisTaskHighPtDeDxV0(TaskName);
86 TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
88 taskHighPtDeDxV0[i]->SetAnalysisType(type);
89 taskHighPtDeDxV0[i]->SetAnalysisMC(AnalysisMC);
90 taskHighPtDeDxV0[i]->SetAnalysisPbPb(kTRUE);
91 taskHighPtDeDxV0[i]->SetProduceTPCBranch(kFALSE);
92 taskHighPtDeDxV0[i]->SetDebugLevel(0);
93 taskHighPtDeDxV0[i]->SetEtaCut(0.8);
94 taskHighPtDeDxV0[i]->SetVtxCut(10.0);
95 taskHighPtDeDxV0[i]->SetMinPt(0.0); // def: 2.0
96 taskHighPtDeDxV0[i]->SetMassCut(0.1); // def: 0.03
97 taskHighPtDeDxV0[i]->SetTreeOption(1);
98 taskHighPtDeDxV0[i]->SetRequireRecV0(kFALSE); // def: kTRUE
99 taskHighPtDeDxV0[i]->SetStoreMcIn(kTRUE); // def: kFALSE
100 taskHighPtDeDxV0[i]->SetTrigger1(kTriggerInt[0]);
101 taskHighPtDeDxV0[i]->SetTrigger2(kTriggerInt[1]);
102 taskHighPtDeDxV0[i]->SetMinCent(minc[i]);
103 taskHighPtDeDxV0[i]->SetMaxCent(maxc[i]);
105 taskHighPtDeDxV0[i]->SetTrackFilterGolden(trackFilterGolden);
106 taskHighPtDeDxV0[i]->SetTrackFilter(trackFilter0);
107 taskHighPtDeDxV0[i]->SetTrackFilterTPC(trackFilterTPC);
109 mgr->AddTask(taskHighPtDeDxV0[i]);
114 // Create ONLY the output containers for the data produced by the
115 // task. Get and connect other common input/output containers via
116 // the manager as below
117 //=======================================================================
118 AliAnalysisDataContainer *cout_hist[6];
119 for( Int_t i=0; i<6; ++i ){
122 Char_t outFileName[256]={0};
123 sprintf(outFileName,"%s_Tree_%1.0f_%1.0f.root",taskname,minc[i],maxc[i]);
124 //AliAnalysisDataContainer *cout_hist = 0;
126 cout_hist[i] = mgr->CreateContainer(Form("output_%1.0f_%1.0f",minc[i],maxc[i]), TList::Class(), AliAnalysisManager::kOutputContainer, outFileName);
127 mgr->ConnectInput (taskHighPtDeDxV0[i], 0, mgr->GetCommonInputContainer());
128 mgr->ConnectOutput(taskHighPtDeDxV0[i], 1, cout_hist[i]);
132 // Return task pointer at the end
133 return taskHighPtDeDxV0[0];
136 if(typerun==3){//pp analysis
138 AliAnalysisTaskHighPtDeDxV0* taskHighPtDeDxV0 = new AliAnalysisTaskHighPtDeDxV0("taskHighPtDeDxV0pp");
139 TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
141 taskHighPtDeDxV0->SetAnalysisType(type);
142 taskHighPtDeDxV0->SetAnalysisMC(AnalysisMC);
143 taskHighPtDeDxV0->SetAnalysisPbPb(kFALSE);
144 taskHighPtDeDxV0->SetProduceTPCBranch(kFALSE);
145 taskHighPtDeDxV0->SetDebugLevel(0);
146 taskHighPtDeDxV0->SetEtaCut(0.8);
147 taskHighPtDeDxV0->SetVtxCut(10.0);
148 taskHighPtDeDxV0->SetMinPt(0.0); // def: 2.0
149 taskHighPtDeDxV0->SetMassCut(0.03); // def: 0.03
150 taskHighPtDeDxV0->SetTreeOption(1);
151 taskHighPtDeDxV0->SetRequireRecV0(kTRUE); // def: kTRUE
152 taskHighPtDeDxV0->SetStoreMcIn(kFALSE); // def: kFALSE
153 taskHighPtDeDxV0->SetTrigger1(kTriggerInt[0]);
154 taskHighPtDeDxV0->SetTrigger2(kTriggerInt[1]);
156 taskHighPtDeDxV0->SetTrackFilterGolden(trackFilterGolden);
157 taskHighPtDeDxV0->SetTrackFilter(trackFilter0);
158 taskHighPtDeDxV0->SetTrackFilterTPC(trackFilterTPC);
160 mgr->AddTask(taskHighPtDeDxV0);
164 // Create ONLY the output containers for the data produced by the
165 // task. Get and connect other common input/output containers via
166 // the manager as below
167 //=======================================================================
168 AliAnalysisDataContainer *cout_histdedxv0;
171 Char_t outFileName[256]={0};
172 sprintf(outFileName,"%s_Tree.root",taskname);
173 //AliAnalysisDataContainer *cout_hist = 0;
175 cout_histdedxv0 = mgr->CreateContainer("output", TList::Class(), AliAnalysisManager::kOutputContainer, outFileName);
176 mgr->ConnectInput (taskHighPtDeDxV0, 0, mgr->GetCommonInputContainer());
177 mgr->ConnectOutput(taskHighPtDeDxV0, 1, cout_histdedxv0);
179 // Return task pointer at the end
180 return taskHighPtDeDxV0;